Mysql 索引偶現失效

2021-10-09 08:24:50 字數 740 閱讀 8946

主要關注type和key_len

對於type: index等範圍查詢最優是range;

對於key_len: 同乙個業務sql也不一定type越好,效果就好,需要理解b+樹,看使用到區分度好的索引的個數也很重要,特別是組合索引。

索引偶爾失效

set optimizer_trace="enabled=on";

select filed1,filed2 from table where filed_3 in ( 'x1','x2' );

select * from information_schema.optimizer_trace;

set optimizer_trace="enabled=off";

對於失效的索引,執行下面的sql看一下caridinality,如果非常低,可能是表髒了,需要運維整理一下表。

檢視caridinality

show index from table;
整理表,會鎖表,在業務低時執行

analyze local table ***xx;
如果索引失效,臨時解決方案是強制走索引

select filed1,filed2 from table force index (idx_) where file1 in ( 

'x1' );

mysql索引失效 常見mysql索引失效條件

使用索引的一般語句 1 where條件中有or,除非or的所有欄位都有索引,只要有乙個沒有索引,就不走索引 explain select from jf user ju where ju.user id or ju.superior1 yyy user id是主鍵,superior1是普通索引,結果...

mysql 主鍵失效 MySQL索引(索引失效)

索引 索引也是一張表,該錶儲存了主鍵與索引字段,並指向實體表的記錄。myisam儲存引擎,資料檔案 索引檔案 表結構檔案分開儲存 innodb儲存引擎,資料和索引儲存在乙個檔案中 b tree索引 hash索引 hash索引 只有memory儲存引擎支援 查詢一條記錄的速度非常快 b tree索引 ...

mysql 索引失效場景 Mysql 索引失效場景

例如 一張user表 有欄位屬性 name,age 其中name為索引 下面列舉幾個索引失效的情況 1.select from user where name xzz or age 16 例如這種情況 當語句中帶有or的時候 即使有索引也會失效。2.select from user where na...