在面试的过程中,经常会被问到如何进行数据库的优化问题。针对这个问题,为MySQL中的数据建立索引即是一种很好的数据库优化方案。说到这里,肯定有人要问题什么是索引?
索引是对数据表中一列或多列的值按照一定规则进行排序方便存储引擎快速查找记录的一种数据结构。通常我们创建索引的目的就是为了加速对表中数据的检索。
在面试的过程中,经常会被问到如何进行数据库的优化问题。针对这个问题,为MySQL中的数据建立索引即是一种很好的数据库优化方案。说到这里,肯定有人要问题什么是索引?
索引是对数据表中一列或多列的值按照一定规则进行排序方便存储引擎快速查找记录的一种数据结构。通常我们创建索引的目的就是为了加速对表中数据的检索。
索引的优点
1、减轻了服务器需要扫描的数据量,从而提高了数据的检索速度;
2、创建唯一性索引,保证数据库表中每一行数据的唯一性;
3、加速表和表之间的连接;
4、可以将随机I/O变为顺序I/O;
5、帮助服务器避免排序和临时表。
索引的缺点
1、索引需要占物理空间;
2、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度。
根据数据库的功能,可以在数据库设计器中创建四种索引:普通索引、唯一索引、主键索引和聚集索引。
建立索引的原则
1、选择唯一性索引
唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。
2、限制索引的数目
索引的数目适度最好。每个索引都需要占用磁盘空间,索引越多,需要的磁盘空间就越大。
3、为经常需要排序、分组和联合操作的字段建立索引
经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,如果为其建立索引,可以有效地避免排序操作。
4、为常作为查询条件的字段建立索引
如果某个字段经常用来做查询条件,那么该字段的查询速度会影响整个表的查询速度,因此有必要为其建立索引。
5、尽量使用前缀来索引
如果索引字段的值很长,最好使用值的前缀来索引。
6、尽量使用数据量少的索引
如果索引的值很长,那么查询的速度会受到影响。
7、最左前缀匹配原则,非常重要的原则
MySQL会一直向右匹配直到遇到范围查询(>、<、between、like)才停止匹配。比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a, b, c, d)顺序的索引,d是用不到索引的;如果建立(a, b, d, c)的索引则都可以用到,a、b、d的顺序可以任意调整。
对于上面这几项建立索引的原则,我们不必墨守成规、生搬硬套,结合自己项目的实际情况,灵活运用即可。