MICUU
微资讯
声卡
创新2024全套教程
5.1声卡全套
创新声卡驱动
板载声卡调试全套教程
Sam机架安装
Sam机架
音效助手
专题
文档
技术文档汇总
站内文档
更多
软件
更新日志
关于
装机必备
Gramos模板
光年后台模板
Betube模板
美图
友情链接
站内导航
关于
搜索
退出登录
登录
原创
索引失效的情况
2021-12-07
66.2w热度
以下情况本人并未进行精确验证,大家参阅的时候如果有什么错误的地方,欢迎批评指正。 索引失效问题是面试必问问题,因为索引失效的情况比较多,很多同学记不住,面试的时候回答不好。我仔细研究了七七四十七天,设计了一句七字口诀 ,记住这句口诀,以后再遇到这个问题就可以拿满分了。 七字口诀就是: **模 型 数 空 运 最 快** 口诀字面意思就是,要运送一个产品模型的话,要用空运,不要用陆运和海运,数空运最快。叫做:模型数空运最快。 下面我拆开逐字讲解一下: **模**:模糊查询 的意思。like的模糊查询以%开头,索引失效。比如: SELECT * FROM `user` WHERE `name` LIKE '%老猿'; **型**:代表数据类型。类型错误,如字段类型为varchar,where条件用number,索引也会失效。比如: SELECT * FROM `user` WHERE height= 180; height为varchar类型导致索引失效。 **数**:是函数的意思。对索引的字段使用内部函数,索引也会失效。这种情况下应该建立基于函数的索引。比如: SELECT * FROM `user` WHERE DATE(create_time) = '2020-09-03'; create_time字段设置索引,那就无法使用函数,否则索引失效。 **空**:是Null的意思。索引不存储空值 ,如果不限制索引列是not null,数据库会认为索引列有可能存在空值,所以不会按照索引进行计算。比如: SELECT * FROM `user` WHERE address IS NULL不走索引。 SELECT * FROM `user` WHERE address IS NOT NULL;走索引。 建议大家这设计字段 的时候,如果没有必要的要求必须为NULL,那么最好给个默认值空字符串,这可以解决很多后续的麻烦(切记)。 **运**:是运算的意思。对索引列进行(+,-,*,/,!, !=, <>)等运算,会导致索引失效。比如: SELECT * FROM `user` WHERE age - 1 = 20; **最**:是最左原则。在复合索引中索引列的顺序至关重要。如果不是按照索引的最左列开始查找,则无法使用索引。 **快**:全表 扫描更快的意思。如果数据库预计使用全表扫描要比使用索引快,则不使用索引。 这就是索引失效的七字口诀,请大家点赞之后默念三遍,模型数空运最快。
注:原创不易,转载请注明出处(
https://micuu.com/new/2423.html
),本站所有资源来源于网络收集,如有侵权请联系QQ245557979进行清除。
最后修改与 2022-02-20
上一篇:
华为云短信接入的坑
下一篇:
又开始了作死的道路
留言反馈
请先登录
问题反馈渠道,如有软件无法下载或者其他问题可反馈。【由于某种原因,目前留言不展示】
用户需要登录后才能留言反馈
立即留言
珍藏视频
10分钟高效燃脂
30天高效瘦脸操
5分钟缓解颈椎操
友人
微博
全民K歌
唱吧
今日头条
悠悠网
科技小锅盖
彼岸桌面
阮一峰
laravel社区
V2ex
掘金
更多>