建组合索引的时候,区分度最高的在最左边。
正例:如果 where a=? and b=? ,a 列的几乎接近于唯一值,那么只需要单建 idx_a 索引即
可。
说明:存在非等号和等号混合判断条件时,在建索引时,请把等号条件的列前置。如:where a>?
and b=? 那么即使 a 的区分度更高,也必须把 b 放在索引的最前列。

区分度是什么

首先,组合索引指的是将多个列组合在一起形成的索引,用于加快查询速度。在建立组合索引时,应该将区分度最高的列放在索引的最左边。

区分度是指该列上不同值的数量占该列总值数量的比例。区分度越高,表示该列对于查询过滤的效果越好,因为它可以帮助缩小查询范围。因此,将区分度最高的列放在索引的最左边,可以使查询更快地命中索引,提高查询效率。

等号条件的列放在最左边

其次,如果查询中包含等号条件和不等号条件混合的情况,应该将等号条件的列放在索引的最左边。因为等号条件只需要精确匹配,而不等号条件需要匹配一定的范围,所以将等号条件的列放在最左边可以更快地缩小查询范围。

例如,当查询条件为 WHERE a=? AND b=? 时,如果列 a 的区分度几乎接近于唯一值,那么只需要单建 idx_a 索引即可。而当查询条件为 WHERE a>? AND b=? 时,虽然列 a 的区分度更高,但由于存在不等号条件,应该将列 b 放在索引的最左边。

总之,建立组合索引时应该优先考虑区分度最高的列,同时应该将等号条件的列放在索引的最左边,以提高查询效率。

mysql 建立组合索引

在 MySQL 中,可以使用 CREATE INDEX 语句来创建组合索引。组合索引也称为联合索引,它是一种包含多个列的索引。与单列索引不同,组合索引可以根据多个列的值来快速定位数据,从而提高查询效率。

下面是一个示例 SQL 语句,演示如何创建一个组合索引:

CREATE INDEX idx_name_age ON my_table (name, age);

在上面的示例中,我们创建了一个名为 idx_name_age 的组合索引,它包含了 my_table 表中的 nameage 两个列。通过这个组合索引,可以根据 nameage 的值来快速定位数据。

总结

创建组合索引时需要考虑列的顺序。如果需要根据某个列进行精确匹配,那么应该将这个列放在索引的最前面;如果需要根据多个列进行排序或者范围查询,那么应该将这些列放在索引的后面。此外,组合索引的列数应该尽可能少,否则可能会影响索引的效率和性能。

数据库建立组合索引时应该遵循的规则, 精确查找先,范围查找后,尽管区分度高相关推荐

  1. mysql中组合索引创建的原则是什么意思_mysql数据库建立组合索引原则

    现实中,mysql可以根据业务需要建立组合索引,由于mysql使用B-Tree格式索引,可以直接定位记录,无需扫描.mysql建立多列索引有最左前缀的原则,即最左优先,如: 如果有一个2列的索引(co ...

  2. 创建组合索引时,索引列顺序的选择

    在创建组合索引时,网上一般的说法会提到:查询时where条件中的列的顺序要和创建索引时列的顺序保持一致,否则组合索引会失效. 更进一步来说,组合索引的各个列中,到底谁应该在前,谁应该在后,还是说创建时 ...

  3. 建立组合索引的字段顺序优化

    建立组合索引的字段顺序优化 简介 组合索引我们经常用到,建立组合索引大家也都会,但是如何考虑建立组合索引的顺序是一个值得推敲的事情. 正文 1. 尽量把最常用的字段放在最前面 对于我们需要创建的组合索 ...

  4. 建立表/索引时的 存储参数:【PCTUSED参数与PCTFREE参数】

    PCTFREE.PCTUSED.FREELIST的关系和应用 概念: pctused:一个块的使用水位的百分比,这个水位将使该块返回到可用列表中去等待更多的插入操作.   pctfree:用来为一个块 ...

  5. 添加组合索引时,做相等运算字段应该放在最前面

    有一个通常的误解,觉得应该把选择性高的字段放在最前面,这通常只是针对一个字段的索引,对于组合索引,常常要把做等式运算的字段放在最前面,看看测试 USE AdventureWorks GOCREATE ...

  6. mysql怎么建组合索引_mysql索引及建立组合索引原则

    两个重要概念 1.对于mysql来说,一条sql中,一个表无论其蕴含的索引有多少,但是有且只用一条. 2.对于多列索引来说(a,b,c)其相当于3个索引(a),(a,b),(a,b,c)3个索引,又由 ...

  7. mysql 索引不重复的值,【锁】在数据库无法使用唯一索引时如何保证数据的不重复?...

    前言 之前数据库的用户表的用户名.手机号码.邮箱都是设置了唯一索引,因此不需要考虑重复的问题.然而,由于手机号码和邮箱都可以为 null,而太多的 null 会影响索引的稳定性,因此去掉唯一索引并将默 ...

  8. MySQL组合索引(多列索引)使用与优化

    一.多列索引 我们经常听到一些人说"把WHERE条件里的列都加上索引",其实这个建议非常错误.在多个列上建立单独的索引大部分情况下并不能提高MySQL的查询性能.MySQL在5.0 ...

  9. mysql组合索引 唯一_(四):MySQL建立索引,唯一索引和组合索引

    # (四):MySQL建立索引,唯一索引和组合索引 先大致介绍下项目的数据库信息. 数据库A:主要存放的通用的表,如User.Project.Report等. 数据库B.C.D:一个项目对应一个数据库 ...

最新文章

  1. DBCC CHECKIDENT
  2. DOM 之通俗易懂讲解
  3. python如何将视频流实时传输到手机?(有问题,一次只能被一台访问)
  4. http并发,操作系统如何识别对应的进程,线程请求
  5. html 和jsp 引入jquery_不用jsp怎么实现前后端交互?给萌新后端的ajax教程(1)
  6. MATLAB软件禁用利好,Matlab被禁用?一款国产软件站了出来说:我就是中国的Matlab...
  7. tkmybatis 子查询_你的名字是爆款吗?一键查询!看看在杭州、全国多少人和你同名!...
  8. 一段JS代码实现光标定位输入框文字最后
  9. python的全局变量和局部变量
  10. COGS 2507 零食店
  11. 安装虚拟光驱Daemon Tool 安装失败
  12. xshell官网最新 中文,xshell
  13. Linux+Nginx+SpringBoot+War环境下websocket部署遇到的问题
  14. [GOM引擎]假人配置的脚本设置方法
  15. 【190302】VC+ 视频捕捉与录像+实例源码源代码
  16. oracle adpatch 回退,Oracle EBS使用adpatch工具打patch过程【Z】 - huak
  17. Excel “不能在隐藏工作簿中编辑宏,请选定“取消窗口隐藏”命令以显示工作簿”
  18. 如何防止失眠——学习笔记
  19. c语言程序判断一个字符串是否是回文数,详解判断回文字符串和回文数算法的C语言代码!...
  20. IntelliJ IDEA之配置JDK的4种方式

热门文章

  1. 欧姆龙CP1H+CIF11与欧姆龙E5cc温控器通讯程序 功能:全新原创可直接应用生产程序
  2. 集成百度离在线语音唤醒/语音合成sdk
  3. 使用yolov3-tiny训练一个人脸检测器
  4. 【概念介绍】人脸匹配
  5. uniapp uni-file-picker 组件删除时增加二次确认弹框
  6. Nginx配置从域名A跳转到域名B
  7. 20161003 NOIP 模拟赛 T2 解题报告
  8. Python打包与解压zip
  9. 相位型LCOS空间光调制器介绍
  10. 联想拯救者Y9000P 2022 i7-12* + 3070Ti安装ubuntu20.04(解决wifi失效、亮度调节问题)