Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > SQL的联合索引和普通索引

SQL中的联合索引和普通索引问题

作者:Annie_Mint

这篇文章主要介绍了SQL中的联合索引和普通索引问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

SQL中联合索引和普通索引

解释

1、索引:是数据库管理系统中一个排序的数据结构,并用以协助快速查询、更新数据库表中数据。

2、联合索引:就是创建一个索引,索引中包含多个列。

3、普通索引:即单个索引,一个索引包含一个列。

区别

联合索引中列的顺序非常重要,从左原则。a,ab,ba,abc。

单个索引:一个一个起作用,也就是说有三个单个索引,哪个条件查询在前哪个起作用,其他不起作用。

结论

一般来说,列表搜索需要多个列查询,此时就可以使用联合索引,都是and的关系。

什么时候需要创建索引:

1、where条件会经常出现的,并且当前表的数量比较大。

2、where条件中是用and而非or的时候。

3、联合索引比单个索引更适合,因为索引占用一定磁盘空间,也就说明有一定的开销,如果多个单个索引比较多,那么多资源的浪费也比较多,联合索引相当于对多个列建索引,并且只建一次,and条件下非常适合。

普通索引跟联合索引哪个更好

索引描述

普通索引是在单个列上创建的索引,它可以加速针对该列的查询,例如使用 WHERE 子句、ORDER BY 子句和 GROUP BY 子句进行过滤、排序和分组。普通索引的优点是简单、易于维护,适用于单个列的查询场景。

联合索引是在多个列上创建的索引,它可以加速多个列的组合查询,例如使用多个 WHERE 子句和 ORDER BY 子句进行过滤和排序。联合索引的优点是可以通过一个索引满足多个列的查询需求,从而减少磁盘 I/O 和索引维护的开销,适用于多列组合查询的场景。

使用建议

如果查询只涉及单个列,并且该列的基数(不同值的数量)很大,则使用普通索引效果更好。

如果查询涉及多个列,并且这些列经常一起查询,或者查询条件在这些列之间频繁变化,则使用联合索引效果更好。

如果查询涉及多个列,但是这些列的基数很小,例如只有两个取值,那么使用联合索引的效果可能不如单独为每个列创建索引的效果。

心得

普通索引和联合索引各有优缺点,具体使用哪种索引取决于查询的场景。

需要注意的是,使用索引并不总是能提高查询性能,有时候索引反而会降低查询性能。

因此,在创建索引时,需要根据具体的查询场景和数据分布情况进行综合考虑,权衡索引的优缺点,选择最适合的索引类型和索引列。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文