| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> mysql 索引失效分析 -> 正文阅读 |
|
[大数据]mysql 索引失效分析 |
mysql 索引失效分析如下: 1、联合索引(多个字段组成的索引)----->最佳左前缀法则:查询从索引的最左前列开始并且不跳过索引中的列,中间有跳过的值,则其后面的索引会失效
?此情此景我想吟诗一首:火车跑的快,全靠头来带,中间数据变,后面止不前 2、范围查询( '<','>', 'like', 'in', 'or' )和联合索引中全值匹配 ? ?①?select * from x where a>1 and b = 1 and c=2; ? ?② select * from x where a like 'tan%'?and b = 1 and c=2; ? ?③?select * from x where a in ('t1','t2')?and b >?1 and c=2;? ? ?④ select * from x where a = 't1' or a='t2'?and b = 1 and c=2; ? ?⑤?select id,a,b,c?from x where a = 't1' or a='t2'?and b = 1 and c=2;
? ? ?? 其实这里用到了索引下推,什么是索引下推?
注意:通过前面2点我们可以清楚的明白,联合索引,最主要是判断首字段是否走索引,以及什么时候回表查询 3、索引列上做了操作(计算、函数、自动或手动类型转换等表达式),会导致索引失效而转向全表扫描 4、mysql在使用不等于(!= 或 <>)
5、is null,is not null也无法使用索引 6、like以通配符开头('%abc..')也会导致索引失效 通过覆盖索引可以解决like '%字符串%'索引失效的问题 例:假设以name,age字段建索引 create index idx_user_nameAge on tb_user(name,age); 查询字段只要有一个和覆盖索引沾边就行 但如果有超过索引的部分,索引就用不上了,所以用select * 就不能使用覆盖索引 7、字符串不加单引号,该字段以后的索引失效 8、少用or,用它来连接时会索引失效 9、少数据值的列也不应该增加索引,只有两种情况,且平均分布,加了索引反而降低速度 10、range的包含范围有一定的阈值,超过会进行全文扫描 这是我总结的mysql索引失效情况,有不对或者需要补充的希望大家指正 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:27:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |