MySQL索引失效實踐

2021-10-21 23:50:09 字數 3842 閱讀 2807

create

table

`employees`

(`id`

int(11)

notnull

auto_increment

,`name`

varchar(24

)not

null

default

''comment

'姓名'

,`age`

int(11)

notnull

default

'0'comment

'年齡'

,`position`

varchar(20

)not

null

default

''comment

'職位'

,`hire_time`

timestamp

notnull

default

current_timestamp

comment

'入職時間'

,primary

key(

`id`),

key`idx_name_age_position`

(`name`

,`age`

,`position`

)using

btree

)engine

=innodb

auto_increment=4

default

charset

=utf8 comment

='員工記錄表'

如果索引了多列,要遵守最左字首法則。指的是查詢從索引的最左前列開始並且不跳過索引中的列。

問題:解決like』%字串%'索引不被使用的方法?

a)使用覆蓋索引,查詢字段必須是建立覆蓋索引字段

explain select name,age,position from employees where name like '%lei%';

b)當覆蓋索引指向的字段是varchar(380)及380以上的字段時,覆蓋索引會失效!

explain select * from employees where name = '1000';

explain select * from employees where name = 1000;

explain select * from employees where name = 'lilei' or name = 'hanmeimei';

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...