前端時間有同行找到我讓我給他看一段sql,說要優化,呢是個多表連線的sql,我看了下,就簡單對sql語句進行了優化,對此說下多表連線優化思路:
按照正常的邏輯假如,abc三個表有關係,一般都是select ... from a left join b ... left join c ... where ...一般都是這樣的結構,其實,我們這樣的sql稍微換一下順序效率就有明顯提公升
我們分析上面的語句,假如a表有100條資料滿足表連線,是不是最終結果為100條,假如滿足where條件的只有10條,是不是最終的有效條數只有10條?也就是說我做了100條資料的連線最後只有10條是我需要的,那是不是做了許多無用功?因此,我們完全可以把where條件提前作為虛表然後進行表連線,這樣效率自然就提高了,其實很多時候的優化是程式設計師完全就可以做到的,因為許多優化是最基本的優化!
MySQL多表連線刪除問題
delete是乙個蠻慎重的sql操作,一般來說這樣刪除操作都需要謹慎小心,以免造成不必要的損失。delete有下面這幾種情況 delete from t1 where條件 delete t1 from t1 where條件 delete t1 from t1,t2 where條件 delete t1...
MySQL多表連線刪除問題
delete是乙個蠻慎重的sql操作,一般來說這樣刪除操作都需要謹慎小心,以免造成不必要的損失。delete有下面這幾種情況 delete from t1 where條件 delete t1 from t1 where條件 delete t1 from t1,t2 where條件 delete t1...
mysql多表連線索引問題
要想明白多表連線過程中索引是否起作用,哪個表的索引起作用。首先先了解在join連線時哪個表是驅動表,哪個表是被驅動表 1.當使用left join時,左表是驅動表,右表是被驅動表,2.當使用right join時,右表時驅動表,左表是被驅動表,3.當使用join時,mysql會選擇資料量比較小的表作...