网上对于 MySQL 中的最重要知识点的说法一般有两种:
- 索引、事务
- 索引、事务和查询
我认为应该把查询加上,尤其是看到美团技术团队写的一篇关于MySQL 索引原理及慢查询优化后,其中的查询主要是指查询优化以及编写高效率的 SQL 语句。
本文主要关注的是有关索引方面的,若未特别说明,以下内容默认是基于 MySQL Innodb存储引擎的 。
什么是索引
MySQL 官方对于索引的定义是:索引是存储引擎用于快速查找记录的一种数据结构。从官方的定义来看,索引是存储引擎层面的一种数据结构。 通俗来讲,索引就好比字典中的目录,如果我们要在字典中查找 MySQL,就先翻到以 M 开头的目录,然后再根据目录找出 MySQL 这个单词在多少页。
为什么要使用索引
在没有深入了解索引之前,我对索引的认识只限于:
- 索引可以加快查询速度
- 索引分为聚簇索引和非聚簇索引
现在,我对索引有了更为深入的认识,也不仅仅是只知道索引的优点。我了解了索引到底有哪些优点、为什么索引有这些优点、索引有什么缺点、索引为什么有这些缺点。
索引的优点:
参考《高性能MySQL》一书
-
<