1. 程式人生 > 其它 >MySQL --- 索引失效情況

MySQL --- 索引失效情況

技術標籤:MySQL

MySQL --- 索引失效


案例分析使用到的SQL

CREATE TABLE staffs(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(24)NOT NULL DEFAULT'' COMMENT'姓名',
`age` INT NOT NULL DEFAULT 0 COMMENT'年齡',
`pos` VARCHAR(20) NOT NULL DEFAULT'' COMMENT'職位',
`add_time` TIMESTAMP
NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT'入職時間' )CHARSET utf8 COMMENT'員工記錄表'; INSERT INTO staffs(`name`,`age`,`pos`,`add_time`) VALUES('z3',22,'manager',NOW()); INSERT INTO staffs(`name`,`age`,`pos`,`add_time`) VALUES('July',23,'dev',NOW()); INSERT INTO staffs(`name`,`age`,`pos`,`add_time`) VALUES
('2000',23,'dev',NOW()); ALTER TABLE staffs ADD INDEX index_staffs_nameAgePos(`name`,`age`,`pos`)

MySQL索引失效有以下情況:

最佳左字首法則失效

當使用複合索引時,即索引使用到從左邊開始,按順序使用,可以少,但是中間不能斷
案例:
索引使用成功:
1.索引全部使用
索引全部使用
2.部分使用索引
部分使用索引
索引失效:
1.索引失效情況一:沒有帶頭大哥欄位 ,失效
索引失效情況一
索引失效情況二
2.索引失效情況二:索引中間中斷,索引部分使用
在這裡插入圖片描述

不要在索引列上做任何操作

這是指不要在索引列上進行計算、函式、手動或自動的型別轉換,都會導致索引失效

例如:
在索引列上進行操作,導致索引失效

儲存引擎不能使用索引中範圍條件右邊的列

即在 WHERE 條件中的範圍查詢會使索引失效
例子:
範圍查詢會使索引失效可以看出在 age > 23 這個條件之後的索引就失效了