考试动态

名师推荐

试听名师的课 查看所有名师

二级查询 MySQL五种索引类型sql执行顺序哪些适合建索引失效 发布时间:2023-12-20 16:05 来源:网络

MySQL五种索引类型

sql执行次序

(根据sql执行顺序来优化,可以把关联表判断条件放到on后面)
from  
on  
join  
where  
group by  
having  
select  
distinct  
union  
order by   
limit

一、哪些数组适宜建索引

二、范围查询索引失效问题

范围查询索引失效,只针对二级索引(不仅字段,其他索引都是二级索引)

(1)、如果走二级索引查询,步骤就是:二级索引–>字段索引–>数据,这就是回表查询(mysql索引中关联的字段,而不是数据,所以二级索引查询会有一个回表的操作)。

(2)、硬盘随机I/O的性能远高于次序I/O。

1、范围查询失效问题

注意二级查询,舍弃索引走全表查询须要满足以下几点:

1、二级索引

2、范围查询

3、查询数目超过了总数据的某个比率

4、并且查询数组不止id和索引还包含了其他数组(前面数组不仅仅为id和where前端索引数组)

建议索引*from表名useindex(索引名)where…

强制索引*from表名forceindex(索引名)where…

忽视索引*from表名index(索引名)where…

2、最左原则3、函数造成索引失效4、字段类型不一致索引失效5、运算符造成索引失效6、or造成索引失效

例:(和是索引,不是索引数组)

7、模糊查询造成索引失效8、IN、NOTIN、、NOT造成索引失效

注意:

只检测存在性,出现多个一样的他只匹配一次

in前面出现多个一样的他是会每位匹配一次

所以,可以的话尽量用

网上说的大表套小表用in,小表套大表用,由于前面会关联查询多次,经验证不存在这些问题情况,从下边执行计划中可以看出是先执行1fromcWHERE=''由于这个sql查询的数据量恰好是1,之后在结果集的临时表中去获取最终结果。这些情况用in或是都一样疗效,区别无非是我前面说的相同数据匹配一次或多次区别!

9、ISNULL,ISNOTNULL索引失效问题

10、子查询造成索引失效

子查询有三种形式:

1、跟在前面二级查询,会很慢(不建议)

2、跟在join前面,会创建临时表

3、跟在where和on前面

当WHERE旁边跟子查询,

11、sql优化方案

可以按照以上造成索引失效、以及sql执行次序来针对sql进行优化

三、总结

索引失效可以从两个方面总结:

破坏了索引结构mysql优化器选择不走索引

破坏了索引结构:like前模糊,索引运算(加减乘除),对索引使用函数,组合索引非最左原则等。

mysql优化器选择不走索引:当查询数据量达到总表数据一定比率的时侯,优化器会感觉走索引效率不如全表查询,因而会舍弃走索引。

第一考试网友情提示:如果您遇到任何疑问,请登录第一考试网考试动态频道或添加qq:,第一考试网以“为考友服务”为宗旨,秉承“快乐学习,轻松考试!”的理念,旨在为广大考友打造一个良好、温馨的学习与交流平台,欢迎持续关注。以上是小编为大家推荐的《二级查询 MySQL五种索引类型sql执行顺序哪些适合建索引失效》相关信息。

编辑推荐

河南2010年会计从业资格考试成绩查询

2010年重庆恢复初级会计电算化考试通知

2010年枣庄市会计从业资格证书办理事项的说

天津2010年会计电算化考试报名时间5月2日-6

辽源市2010第二季度会计从业资格考试报名时