网站seo关键词排名,seo博客教程,株洲做网站多少钱,做网站要准备什么资料索引失效是指数据库查询在执行过程中无法有效利用索引#xff0c;导致查询性能下降或索引无法被使用的情况#xff0c;以下是常见的导致索引失效的原因#xff1a; 模糊查询以通配符开头#xff0c;自己都不知道具体要查什么#xff0c;怎么使用索引呢#xff0c;所以会导… 索引失效是指数据库查询在执行过程中无法有效利用索引导致查询性能下降或索引无法被使用的情况以下是常见的导致索引失效的原因 模糊查询以通配符开头自己都不知道具体要查什么怎么使用索引呢所以会导致索引失效。
-- 1.模糊查询时,以通配符开头的(type All 表示进行全表扫描)索引会失效
EXPLAIN SELECT * FROM north_american_box_office WHERE zhongwenpianming LIKE %子%
-- 如果不是通配符开头,可以使用索引(type range 表示查询使用了范围扫描(Range Scan))
EXPLAIN SELECT * FROM north_american_box_office WHERE zhongwenpianming LIKE 狮子%
-- 如果是等号则直接使用索引(type ref 表示使用非唯一索引读取)
EXPLAIN SELECT * FROM north_american_box_office WHERE zhongwenpianming狮子王 组合索引不包含首字段其实和模糊查询以通配符开始的原因差不多不包含首字段无法触发该组合索引。
-- 2.组合索引,如果不包含组合索引的第一个字段则不会走索引
-- 当查询的数据符合要求的很多,全表查询的效率大于索引的效率,则会走全表扫描(特殊情况)
-- 创建一个组合索引
CREATE INDEX index_tianshu_piaofang ON north_american_box_office
(shangyingtianshu, leijipiaofang);
-- 索引有效
EXPLAIN SELECT * FROM north_american_box_office
WHERE (shangyingtianshu BETWEEN 3 AND 5) AND leijipiaofang 5000
-- 索引失效(由于没有组合索引的第一个字段造成)
EXPLAIN SELECT * FROM north_american_box_office
WHERE leijipiaofang 5000
-- 索引失效(由于查询的符合条件的数据体量较大)
EXPLAIN SELECT * FROM north_american_box_office
WHERE (shangyingtianshu BETWEEN 3 AND 15) AND leijipiaofang 500使用OR关键字进行查询时如果有一个条件没有索引则索引失效。
-- 3.如果 OR 前后的两个条件的列都是索引,那么查询中将使用索引;
-- 如果 OR 前后有一个条件的列不是索引,那么查询中将不使用索引。
-- 索引失效(累计票房没有索引,因为它不是组合索引的第一个字段)
EXPLAIN SELECT * FROM north_american_box_office
WHERE zhongwenpianming LIKE 狮% OR leijipiaofang 5000
-- 索引有效(中文片名和上映天数(组合索引中的第一个字段)都有索引)
EXPLAIN SELECT * FROM north_american_box_office
WHERE zhongwenpianming LIKE 狮% OR shangyingtianshu BETWEEN 90 AND 100 使用函数进行查询
-- 4.查询语句中使用函数
EXPLAIN SELECT * FROM north_american_box_office
WHERE LENGTH(zhongwenpianming) 9