mysql之高效sql注意

今天扯淡下我們寫sql應該注意些什麼,歡迎拍磚,互相學習!!!

 

注意點說明:

1.全值匹配最好

2.最左前綴法則,如果索引了多列,要遵循最左前綴法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列

3.不在索引列上做任何操作(計算、函數、自動或手動類型轉換),會導致索引失效而轉向全表掃描

4.範圍條件右邊的條件無法使用索引


 

5.儘量使用覆蓋索引(只訪問索引的查詢,索引列和查詢列一致),減少select *


 

6.使用 !=或<> 無法使用索引會導致全表掃描


 

7.is null,is not null 也無法使用索引


 

8.like以%開頭,索引失效會變成全表掃描。解決:開頭不用%可使用索引


 

9.字符串不加單引號索引失效變成全表掃描


 

10.少於or,用他會索引失效


 

針對以上注意的檢測題


 

小表驅動大表,即小的數據集驅動大的數據集

select * from A where id in (select id from B)

當B表的數據集小於A表的數據集時,用in優於exists

select * from A where exists (select 1 from B where B.id = A.id)

當A表的數據集小於B表的數據集時,用exists優於in

 

 order by 和where都滿足左前綴法則。 組合索引( age,birth)     這樣的查詢sql會引起文件排序 select * from a order by age asc,birth desc ,爲什麼呢?答:升降機累不累?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章