索引一定会提高效率吗?重复度高会带来副作用

索引的类型-:

- 聚集索引把索引和数据存在了一起。
  可以这么理解,聚集索引的叶子节点存储的是数据的指针(或者是数据本身)。具体暂时不确定,后续了解之后再确定。
- 非聚集索引(也叫二级索引)的叶子节点存储的是主键值(或叫做聚集索引值)

数据库中聚集索引只有一个,默认主键。其他用户创建的索引都是非聚集索引。
非聚集索引存储了对主键的引用,即通过索引确定叶子节点之后,还需要再次根据主键去查询数据。(所以会查询两次)

暂且不提索引对insert、update、delete操作带来的性能开销和物理空间的开销

case:

在一个用户行为统计表中(增量表),每天成千上万个统计数据,以时间戳(如一周之内)为条件去检索,由于每一个时间戳都有成千上万个对应的Id,还需要去聚类索引中再去查询数据,开销非常大。

解决方案:直接获取时间戳范围内最大和最小的数据id,以id为范围条件去检索,直接走聚类索引,效率快很多

你可能感兴趣的:(mysql,索引,数据库)