什么是索引?
举个栗子,我们拿出一本新华字典,它的目录实际上就是一种索引:非聚集索引。我们可以通过目录迅速定位我们要查的字。而字典的内容部分一般都是按照拼音排序的,这实际上又是一种索引:聚集索引。
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。
索引的分类
- 聚集索引
- 非聚集索引
- 哈希索引
- B+-树索引(二分查找)
为表设置索引要付出代价的:
一是增加了数据库的存储空间,
二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)
索引作用?
创建索引可以大大提高系统的性能。
- 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
- 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
- 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
- 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
- 使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
怎么知道命中索引?
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。
explain关键字的使用方法很简单,就是把它放在select查询语句的前面。
mysql查看是否使用索引,简单的看type类型就可以。如果它是all,那说明这条查询语句遍历了所有的行,并没有使用到索引。
数据库优化方法?
- SQL语句优化
- 索引优化
- 数据表结构优化
- 数据库配置优化
- 硬件优化