数据库索引

138 阅读1分钟

1.能说说什么是索引吗?索引的种类有哪些?

索引(Index)是帮助数据库高效获取数据的数据结构。索引是在基于数据库表创建的,它包含一个表中某些列的值以及记录对应的地址,并且把这些值存储在一个数据结构中。最常见的就是使用哈希表、B+树作为索引,项目中我们使用InnoDB引擎,默认的是B+树。

2.什么情况下适合建索引?

一般来说,在WHERE和JOIN中出现的列需要建立索引,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引(以通配符%和 开头作查询时,MySQL不会使用索引)。通常会根据慢查询日志来优化 SQL以及判断是否建索引。

3.mysql为什么采用b+树的数据结构?这和hash索引比起来有什么优缺点吗?

由于索引是存在于磁盘中,当索引非常大的时候,比如达到几个G的时候,无法一次加载到内存中,所以数据库中索引使用的是查找效率更高的树形结构。B+树是平衡多路查找树,是为磁盘等外存储设备设计的一种平衡查找树。

4.如果每天几百万数据,一个月就是几千万了,有没有对查询做一些优化呢?

  1. 分库分表
  2. 大宽表和模糊查询可以用es

5.建索引需要遵循哪些原则?

  1. 最左匹配原则
  2. =和in可以乱序
  3. 区分度高的列建索引
  4. 索引列不参与计算
  5. 尽量扩展索引,不新建索引