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

 更新时间:2023年09月05日 14:37:35   作者: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 和索引维护的开销,适用于多列组合查询的场景。

使用建议

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

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

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

心得

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

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

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

总结

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

相关文章

  • mysql存储过程 游标 循环使用介绍

    mysql存储过程 游标 循环使用介绍

    今天分享下自己对于Mysql存储过程的认识与了解,这里主要说说大家常用的游标加循环的嵌套使用
    2012-11-11
  • 记一次因线上mysql优化器误判引起慢查询事件

    记一次因线上mysql优化器误判引起慢查询事件

    这篇文章主要介绍了记一次因线上mysql优化器误判引起慢查询事件的相关资料以及最终的解决方案,分享给大家,希望能够给大家一点启发。
    2017-02-02
  • RR与RC隔离级别下索引和锁的测试脚本示例代码

    RR与RC隔离级别下索引和锁的测试脚本示例代码

    这篇文章主要给大家介绍了关于RR与RC隔离级别下索引和锁的测试脚本的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • MySQL自定义函数简单用法示例

    MySQL自定义函数简单用法示例

    这篇文章主要介绍了MySQL自定义函数简单用法,结合实例形式分析了mysql自定义函数的基本定义、使用方法及操作注意事项,需要的朋友可以参考下
    2018-12-12
  • Mysql覆盖索引和前缀索引的实战

    Mysql覆盖索引和前缀索引的实战

    SQL是优化数据库的一个重要手段,本文主要介绍了Mysql覆盖索引和前缀索引的实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-07-07
  • MySQL 查看链接及杀掉异常链接的方法

    MySQL 查看链接及杀掉异常链接的方法

    这篇文章主要介绍了MySQL 查看链接及杀掉异常链接的方法,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • MySQL kill不掉线程的原因

    MySQL kill不掉线程的原因

    这篇文章主要介绍了MySQL kill不掉线程的原因,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • Mysql 5.7.9 shutdown 语法实例详解

    Mysql 5.7.9 shutdown 语法实例详解

    之前如果想关闭一个mysql数据库可以通过kill 命令、mysqladmin shutdown 、service mysqld stop 等这样的方式。然而在mysql-5.7.9之后mysql终于提供了SQL接口的shutdown语法啦
    2017-06-06
  • MySQL笔记之数据类型详解

    MySQL笔记之数据类型详解

    本篇文章对mysql数据类型进行了详细的介绍,需要的朋友参考下
    2013-05-05
  • linux 下配置安装mysql以及配置【经验】

    linux 下配置安装mysql以及配置【经验】

    这篇文章主要介绍了linux 下配置安装mysql以及配置【经验】,需要的朋友可以参考下
    2016-05-05

最新评论