上海网站建设价位,上海关闭娱乐场所通知,怎么做网站自动采集数据,网站排名 算法文章概要
本篇文章通过几个问题来了解MySQL中索引相关的概念。平时在学习MySQL时或多或少都听说过索引的概念#xff0c;但是索引到底是个什么东西#xff0c;可能还不是非常的清楚。
正文
1. 什么是索引#xff1f;
索引#xff0c;在MySQL中也称为键(key)#xff0c…文章概要
本篇文章通过几个问题来了解MySQL中索引相关的概念。平时在学习MySQL时或多或少都听说过索引的概念但是索引到底是个什么东西可能还不是非常的清楚。
正文
1. 什么是索引
索引在MySQL中也称为键(key)是存储引擎用于快速查找记录的一种数据结构。
2. 索引有哪些类型 B-Tree索引 索引对于多个值进行排序的依据是CREATE TABLE语句中定义索引时列的顺序。 全文索引 FULLTEXT是一种特殊类型的索引它查找的是文本中的关键词而不是直接比较索引中的值
3. B-Tree索引适用于哪些类型的查找
全值匹配(或者说精准匹配查询的列和索引列完全匹配)匹配最左前缀(下面的几种都遵循这一原则)匹配列前缀匹配范围值精确匹配某一列而范围匹配另外一列只访问索引的查询
4. 什么情况下索引会失效
如果不是按照索引的最左列开始查找则无法使用索引。 就是说不能跳过索引中字段起始左边几列而直接使用后面的值来进行匹配。不能跳过索引中的列。 和上面不同这种情况下是使用了左边的几列但是后面跳过几列后继续使用后面的几列来进行查询此时存储引擎只能利用从左边开始的几列索引来进行匹配。如果查询中有某列的范围查询则其右边所有列都无法使用索引优化查找。
由此可见在创建索引列时索引的顺序至关重要关系到后面的查询是否能够充分利用索引。
另外在这里打个问号(?)为什么这些情况下会造成某些索引列失效
5. 使用索引有哪些优点
索引大大减少了服务器需要扫描的数据量索引可以帮助服务器避免排序和临时表索引可以将随机I/O变为顺序I/O
总结
本篇文章通过5个问题来简单了解索引是什么为什么会有索引使用索引有哪些优势。对于文章中提到的一些概念后面会随着学习的深入逐步涉及比如学习B-Tree(实际上InnoDB引擎使用的B树因为B树将实际的记录存到到节点中这会占用更多的内存另外B树是多路平衡查找树过多平衡树的操作也会带来更多的开销。)
希望你能从本篇文章学习到一些新的东西。
参考
《高性能MySQL(第四版)》