导致索引失效的案例
1.建什么索引用什么索引,顺序也最好保持一致
2.最佳左前缀索引名称命名(如字段name,age,city,则索引命名应该是nameAgeCity或者xxx_nameAgeCity,顺序很重要)
3.不在索引列上做任何操作(计算,函数,or,类型转换),会导致索引失效而转向全表扫描
4.存储引擎不能使用索引中范围条件右边的列(如name='lin' and age>25 and city='qingdao',则age后面的索引会实效)
5.尽量使用覆盖索引(只访问索引的查询(索引列和要查询的列一致)),减少select *
6.MySQL在使用不等于(!=或者<>)的时候无法使用索引会导致全表扫描
7.is null,is not null 也无法使用索引
8.like以通配符在这('%abc','%abc%')两种情况会索引实效变成全表扫描,'abc%'则不会,若要'%abc','%abc%'不失效,建议使用覆盖索引,且查询的字段要少于索引或者与索引一致,不使用select *。如为name,age,city建了索引,请这么使用:select name或者select age,或者select city或者select name,age,city。如果select name,age,city,email则会全表扫描
9.字符串不加引号索引失效,
10.少用or,用他来连接时索引会失效
11.select * from A where exists (select 1 from where b.id=A.id)#当A表的数据系小于B表时,用exists优于in
12.使用join代替子查询
索引失效的情况
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 数据库使用的oracle数据库,可视化管理工具使用的PLSQL 查看表中的索引选中表,右键, view -->in...
- 【日精进打卡第95天】 【知~学习】 《六项精进》2遍 共129遍 《大学》2遍 共129遍 •••••• 【经典...