sql優化哪些情況造成索引失效或查詢慢

2022-09-19 07:21:12 字數 404 閱讀 1513

1.sql執行順序為從右往左,where後有多個條件時,過濾資料多的條件放最右邊。

2.以下情況會造成索引失效,應盡量避免。

(1)使用like進行模糊查詢,應為 '值%',不使用雙百分號,即'%值%'。

(2)索引字段避免出現計算,函式,資料轉換,不使用not ,<> ,!= ,is null ,is not null等。

3.避免sql過於複雜,包含太多子查詢。

4.union all查詢速度比 union 快,盡量使用union all。

5.避免使用耗費資源的操作,帶有distinct ,union,minus,intersect,order by的sql語句會啟動sql引擎 執行,耗費資源的排序(sort)功能,

distinct需要一次排序操作, 而其他的至少需要執行兩次排序

哪些情況下sql索引會失效

原文 面試時被問到這個問題,記錄筆記,免得被面試的人鄙視!索引什麼時候不會生效,以下集中情況會導致索引失效 1.條件中用or,即使其中有條件帶索引,也不會使用索引查詢 這就是查詢盡量不要用or的原因,用in吧 注意 使用or,又想索引生效,只能將or條件中的每個列都加上索引 2.對於多列索引,不是使...

造成mysql索引失效的幾種情況

1.索引無法儲存null值 a.單列索引無法儲null值,復合索引無法儲全為null的值。b.查詢時,採用is null條件時,不能利用到索引,只能全表掃瞄。為什麼索引列無法儲存null值?a.索引是有序的。null值進入索引時,無法確定其應該放在 將索引列值進行建樹,其中必然涉及到諸多的比較操作,...

SQL優化 索引失效

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