Mysql索引失效 備忘

2021-08-27 16:36:47 字數 894 閱讀 6123

建立乙個user表:

create table `user` (

`id` int(11) not null auto_increment,

`name` varchar(32) default '',

`age` tinyint(4) default null,

`email` varchar(128) default null,

`title` varchar(256) default null,

primary key (`id`),

unique key `name` (`name`) using btree,

key `age` (`age`),

key `email` (`email`)

) engine=innodb auto_increment=4 default charset=utf8

其中,'name'為唯一索引,'age'和'email'為普通索引,'title'未使用索引.

1. '!='操作

三條sql只有一點區別,就是select返回的列資訊不同,我們發現,第二條sql使用到了索引,而第一條則沒有,看樣子"!="操作使索引失效,是有前提的,即返回的結果中,如果只包含"name"是使用索引的.第三條sql因為age是索引列,索引使用到了索引.

2. "in" 操作

情況和1)非常類似,到底是什麼原因?

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