「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。
提起优化sql,很大一部分内容都是优化索引,索引在sql优化中占了很大比重。索引虽然可以提高效率,但是需要正确认识索引,才能用好。
那么,什么时候该用索引呢?
数据库中的索引,可以帮我们快速进行特定值的定位与查找,从而加快数据的查询速度。不使用缩阴,查询数据就是逐条查询。 通常情况下,当数据量过少,比如少于一千条,没必要用索引。 当数据重复度过高,比如高于百分之十的时候,也没必要用索引。因为如果查询到重复数据的时候,需要先访问重复数据的索引,再根据索引去查找重复数据,可能会更慢。也就是说我们需要考虑查询数据的分布,分布越少,查询索引数据的收益越大。
索引的种类有哪些? 从功能逻辑上说,索引主要有四种:
- 普通索引:没有约束,主要用来提高查询效率
- 唯一索引:在普通索引的基础上增加了数据唯一性的约束,可以有多个
- 主键索引:在唯一索引的基础上增加了不为空的约束,一个表只有一个
- 全文索引:用的不多,建议用es
按照物理实现方式,索引分为:
- 聚集索引:可以按照索引字段来排序存储数据,查找非常高效,一般主键的索引都是聚集索引
- 非聚集索引:索引指向的内容为随机存储,因为数据已经按聚集索引排好了,所以索引指向的内容是随机的。但是索引本身的排序肯定是顺序的。所以查询的时候需要先查询索引表,然后再查询数据
按照字段个数来分,可以分为:
- 单一索引:只有一个字段的索引
- 联合索引:多个列组合在一起创建的索引叫联合索引。存在最左匹配原则,即按照最左边优先的方式进行匹配,即对AB建立索引,搜AB或者搜A效率差不多,搜B联合索引失效