SQL優化及索引失效彙總

2021-10-04 00:25:59 字數 649 閱讀 5472

注意具有索引列的查詢條件,避免造成索引失效(具體看如下的索引失效規則)

對於資料重複多的列,無需建立索引

索引並非越多越好,索引越多,對增刪改的速度就會越慢

select 結果中,避免使用*符號,只返回有用的字段

where語句中使用 != 和 <>

使用 null判斷,例如: where name is null / name is not null

索引列資料中包含 null,索引失效

在範圍條件語句後面的列索引都會失效;例如 where name = 『kellan』 and age > 10 and *** = 『男』; 其中只有name欄位的索引有效

模糊查詢中,將%放在字段前面,則索引失效;即 where name like 『%kellan』 . 與 where name like 『kellan%』。前者索引失效

避免直接對索引字段進行 計算與使用函式;都會使索引失效

避免使用 or條件判斷,索引會失效,進行全表搜尋; 可以使用 union代替

in 和 not in要慎用,否則會導致全表搜尋; 如果是連續的值,可是使用between代替;或者可以先使用子查詢,降低搜尋的資料量,再使用in 和 not in; 比如: select * from (子查詢) where id in (1,2,3);

SQL優化 索引失效

資料型別出現隱式轉換的時候不會命中索引,例如當列型別是字串,一定要將字元常量值用引號引起來。例如 to char 日期,yyyy mm dd 2020 12 10 改寫為 日期 to date 2020 12 10 yyyy mm dd 例如 like 哈哈 like 哈哈 都不會走索引 盡量寫 l...

Mysql 之索引優化及索引失效

1.最佳左字首法則 如果索引了多列,要遵守最左字首法則.指的是查詢從索引的最左前列開始並且不跳過索引中的列.2.不在索引上左任何操作 計算,函式,自動or手動 型別轉換 會導致索引失效而轉向全表掃瞄 3.儲存引擎不能使用索引中範圍條件右邊的列 4.盡量使用覆蓋索引 只訪問索引的查詢 索引列和查詢列一...

SQL及索引優化

一 問題sql篩選步驟 1 檢查慢日誌是否開啟 2 檢查慢日誌路徑 檢查慢日誌路徑 3 開始慢查詢日誌 set global slow query log on 4 慢日誌判斷標準 show variables like long query time 5 修改慢日誌判斷標準 由於實際專案中1秒左右...