MySQL使用索引的场景及真正利用索引的SQL类型

1. 为什么使用索引
在无索引的用索引的用索引情况下,MySQL会扫描整张表来查找符合sql条件的场景记录,其时间开销与表中数据量呈正相关。正利对关系型数据表中的用索引的用索引某些字段建索引可以极大提高查询速度(当然,不同字段是场景否selective会导致这些字段建立的索引对查询速度的提升幅度不同,而且索引也并非越多越好,正利因为写入或删除时需要更新索引信息)。用索引的用索引
对于MySQL的场景Innodb储存引擎来说,大部分类型的正利index均以B-Tree数据结构的变种B+Tree来存储(MEMORY类型的表还支持hash类型的索引)。B-Tree是用索引的用索引数据库或文件系统中常用的一种数据结构,它是场景一种N叉平衡树,这种树结构保证了同层节点保存的正利key有序,对于某个节点来说,用索引的用索引其左子树保存的服务器托管场景所有key均小于该节点保存的 key,其右子树保存的正利所有key均大于该节点保存的key。此外,在工程实现上,还结合操作系统的局部性原理做了很多优化,总之,b-tree的各种特性或优化技巧能保证:1) 查询磁盘记录时,读盘次数最少;2) 任何insert和delete操作对树结构的影响均很小;3) 树本身的rebalance操作很高效。
2. MySQL使用索引的场景
MySQL在以下操作场景下会使用索引:
1) 快速查找符合where条件的记录
2) 快速确定候选集。若where条件使用了多个索引字段,则MySQL会优先使用能使候选记录集规模最小的那个索引,以便尽快淘汰不符合条件的记录。
3) 如果表中存在几个字段构成的联合索引,则查找记录时,这个联合索引的最左前缀匹配字段也会被自动作为索引来加速查找。
例如,若为某表创建了3个字段(c1, c2, c3)构成的联合索引,则(c1), (c1, c2), (c1, c2, c3)均会作为索引,(c2, c3)就不会被作为索引,云南idc服务商而(c1, c3)其实只利用到c1索引。
4) 多表做join操作时会使用索引(如果参与join的字段在这些表中均建立了索引的话)
5) 若某字段已建立索引,求该字段的min()或max()时,MySQL会使用索引
6) 对建立了索引的字段做sort或group操作时,MySQL会使用索引
3. 哪些SQL语句会真正利用索引
从MySQL官网文档"Comparison of B-Tree and Hash Indexes"可知,下面这些类型的SQL可能会真正用到索引:
1) B-Tree可被用于sql中对列做比较的表达式,如=, >, >=, <, <=及between操作
2) 若like语句的条件是不以通配符开头的常量串,MySQL也会使用索引
比如,SELECT * FROM tbl_name WHERE key_col LIKE Patrick%或SELECT * FROM tbl_name WHERE key_col LIKE Pat%_ck%可以利用索引,而SELECT * FROM tbl_name WHERE key_col LIKE %Patrick%(以通配符开头)和SELECT * FROM tbl_name WHERE key_col LIKE other_col(like条件不是常量串)无法利用索引。
对于形如LIKE %string%的sql语句,若通配符后面的string长度大于3,则MySQL会利用Turbo Boyer-Moore algorithm算法进行查找。
3) 若已对名为col_name的列建了索引,则形如"col_name is null"的SQL会用到索引
4) 对于联合索引,sql条件中的最左前缀匹配字段会用到索引,示例请参考本文第2节第3条对联合索引的说明
5) 若sql语句中的免费源码下载where条件不只1个条件,则MySQL会进行Index Merge优化来缩小候选集范围
博文出处:http://blog.csdn.net/pcyph/article/details/45825533
相关文章
将电脑内存条改成U盘的详细教程(简单快速地将电脑内存条改装成U盘的方法)
摘要:随着科技的不断发展,我们的电脑使用越来越频繁,对存储设备的需求也越来越大。而将电脑内存条改装成U盘是一种非常实用的解决方案。本文将详细介绍将电脑内存条改装成U盘的方法,以及相关的注...2025-11-05苹果电脑如何安装Windows8系统(详细教程和步骤让你轻松操作)
摘要:苹果电脑因其高性能和稳定的操作系统而备受喜爱,但有时候我们也需要使用Windows系统来满足一些特定需求。本文将为大家介绍如何在苹果电脑上安装Windows8系统的详细步骤和教程,...2025-11-05Win10蓝屏问题修复指南(解决Win10蓝屏问题的方法和技巧)
摘要:在使用Windows10操作系统时,很多用户可能会遭遇蓝屏问题,这给用户的正常使用带来了很大的困扰。本文将为大家提供一些解决Win10蓝屏问题的方法和技巧,帮助读者快速修复蓝屏问题...2025-11-05如何解决旧台式电脑反应慢的问题(提升电脑速度,让旧机焕发活力)
摘要:现如今,电脑已经成为人们生活和工作中不可或缺的工具,但是随着时间的推移,旧台式电脑可能会变得越来越慢。这种情况给我们的使用带来了困扰,但是不必担心,本文将为您介绍一些简单易行的方法...2025-11-05- 摘要:在这个充满变化和选择的时代,我们常常会感到迷茫,无法确定自己的方向。而qcyqy5s作为一款备受瞩目的无线耳机,同样也引发了人们的疑惑与困惑。本文将从多个角度探讨qcyqy5s的魅...2025-11-05
铁三角ATH-EM7X耳机的优势与特点(音质出众、舒适无压、时尚外观、适用性强)
摘要:铁三角ATH-EM7X耳机作为铁三角公司的旗舰级产品,以其卓越的音质和舒适度备受音乐爱好者的青睐。本文将从音质、舒适度、外观和适用性四个方面来详细介绍ATH-EM7X耳机的特点和优...2025-11-05

最新评论