java踩坑日常——數據庫索引失效


我們常見的幾個索引失效場景,大致有以下幾種:

1、String型數據使用int直接查

2、like ’%a‘的情況

3、組合索引a,b單獨使用b

4、命中數據過多到時掃描全表

5、索引列中有計算或者使用了函數

6、a='x' or b='y',此時a有索引但是b無索引

 

最近遇到的應該屬於4中的一種特殊情況——dba報sql慢查,我們看了查找字段有索引,表數據60W左右,explain看查詢字段in數量為9走索引,10掃全表。一直字段distinct值大概15w左右。

苦思無果后,使用show index from查看表索引,發現是cardinality有問題,只有38.。。聯系dba進行analyze操作,再次explain問題解決。

但是按理說滿足以下兩個條件之一,cardinality值就該有變化。

  • 表中1/16的數據已發生變化
  • stat_modified_counter>2000000000

此處問題原因存疑。

 


免責聲明!

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



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