数据库索引和其优化

幻昼 2020年03月15日 215次浏览

什么是索引?

举个栗子,我们拿出一本新华字典,它的目录实际上就是一种索引:非聚集索引。我们可以通过目录迅速定位我们要查的字。而字典的内容部分一般都是按照拼音排序的,这实际上又是一种索引:聚集索引。

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。

索引的分类

  1. 聚集索引
  2. 非聚集索引
  3. 哈希索引
  4. B+-树索引(二分查找)
为表设置索引要付出代价的:
一是增加了数据库的存储空间,
二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)

索引作用?

创建索引可以大大提高系统的性能。

  1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  2. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
  3. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
  4. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
  5. 使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

怎么知道命中索引?

explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。
explain关键字的使用方法很简单,就是把它放在select查询语句的前面。

mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。

数据库优化方法?

  1. SQL语句优化
  2. 索引优化
  3. 数据表结构优化
  4. 数据库配置优化
  5. 硬件优化