今天扯淡下我們寫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