正確創建索引和索引失效


1.什么情況不適合創建索引?

  1. 列的離散程度不高:即使創建了索引,也不會走索引,因為需要額外的回表操作,它的cost可能會比全表掃表更高。
  2. 不經常查詢的字段:創建索引會占用額外的存儲開銷、性能開銷。
  3. 頻繁更新的字段:頻繁更新會導致頻繁頁分裂,需要遷移數據,會降低性能。
  4. 字段數據占用空間過大:會導致索引節點的數據頁能存儲的索引數量變少,從到導致索引的路數表少,深度表深,IO次數變多。(推薦使用前綴索引)
  5. 已經存在聯合索引的首字段:無需重復創建索引。

2.什么情況索引會失效?

  1. 列的離散程度不高
  2. 負向查詢(not in、!= 、<>): 導致使用索引檢索是,無法判斷大小,無法過濾數據。
  3. 索引字段上面有函數:索引上加上了函數,相當於改變了索引結構,無法使用索引檢索數據。
  4. 最左匹配原則(like '%aaa%'): 導致使用索引檢索是,無法判斷大小,無法過濾數據。
  5. 沒有使用聯合索引第一個字段: 聯合索引是數據是拼接的,沒有第一個字段的數據,好比like '%aaa%' , 導致使用索引檢索是,無法判斷大小,無法過濾數據。
  6. 字符串索引的值不加引號:數據類型不一致,無法比較。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM