Mysql高性能索引系列一:索引的优点

前言:

目的性单纯且准确:只是为了让自己更体系的学习mysql。

强调:接下来记录的所有知识点都是基于InnoDB来讨论的,若有涉及其他引擎,会单独说明。

会持续更(guizhidaoshenmshihougengxin)

索引可以让服务器快速定位到表的指定位置。但是这并不是索引的唯一作用。根据创建索引的的数据结构不同,索引也有一些其他的附加作用。

最常见的B-Tree索引(B-Tree如何实现的不在本章讨论范围之内,有兴趣的同学可以去了解一下,对学习索引会有很大的帮助),按照顺序存储数据,所以Mysql可以用来做ORDER BY和GROUP BY操作。因为数据时有序的,所以B-Tree也会将相关的列值都存储(后续章节会展开讨论)在一起。最后,因为索引中存储了实际的列值,所以某些查询只使用索引就能够完成全部查询。索引的特性已经罗列出来了,那么塔的优点我们来总结一下:

1、索引大大减少了服务器需要扫描的数据量

2、索引可以帮助服务器避免排序和临时表

3、索引可以将随机IO变为顺序IO

针对大部分的操作而言,DQL是我们最常见,也是最头疼的,如何优化一个查询成了我们工作中最重要的一部分。在下公司要求所有线上DQL不超过30ms(脑壳疼),接下来的分享,我会围绕以上几个优点和几大特性一一展开,与大家一起学习如何构建高性能索引解决方案。

那么第一个问题就来了:

索引是最好的解决方案吗?

答案毫无疑问不是,也不能这么绝对,换句话说:并不总是。只有当索引帮助存储引擎快速查找到记录带来的好处大于其他的额外工作时,那么这个索引才是有效的。

你可能感兴趣的:(Mysql高性能索引系列一:索引的优点)