首页 > 数据库 >mysql的组合索引

mysql的组合索引

时间:2024-07-26 12:17:45浏览次数:8  
标签:decie 组合 索引 顺序 mysql where id

创建联合索引

修改表-创建索引
image
创建表-创建索引
image

创建结果:

Seq_in_index:表示该列在索引中的位置,如果索引是单列的,则该列的值为 1;如果索引是组合索引,则该列的值为每列在索引定义中的顺序。
这里decie_id在组合索引中的顺序是1,question_id在组合索引中的顺序是2
列在组合索引的顺序主要影响在排序和查询条件中

使用组合索引

where子句使用组合索引

where条件中索引列交换位置不会影响查询
2个条件都使用上,优化器可以自己调整顺序满足索引要求
image
image
根据最左原则,where条件只用了decie_id,组合索引不会失效
image
根据最左原则,where条件只用了question_id,组合索引失效
image

order语句使用组合索引

优化器默认采取全部扫描了,因为是查询出所有数据,所以全表扫描会比索引更快,节省回表的时间
image
如果是筛选部分数据,那么就会使用到索引而不会全表扫描
image
调整orderby字段的顺序之后,索引失效;所以当使用order by语句,确保与联合索引的顺序要一致
image
索引覆盖
image

where和order子句中使用组合索引

where条件只有where条件只用了decie_id,根据最左原则索引生效;实际只用了decie_id索引,order by使用索引生效
image
where条件只有where条件只用了decie_id,根据最左原则索引生效;但是decie_id使用>范围查找后,导致数据乱序,实际只用了decie_id索引
image

组合索引失效

where条件中有>=导致组合索引失效
image
最左原则匹配失败,组合索引失效
image

参考:https://mp.weixin.qq.com/s?__biz=MzI2NzM1OTM4OA==&mid=2247495940&idx=1&sn=a229b322b7caa51a3b3c53466e22bfd8&chksm=ea82b4f7ddf53de196cee2bafbfa44f7cc2c0e5b0f74cdac91e7a5d6c611b3ecefc5df0d8332&scene=27

标签:decie,组合,索引,顺序,mysql,where,id
From: https://www.cnblogs.com/zhouzou/p/18325036

相关文章

  • ubuntu系统安装mysql
     一、下载安装包https://downloads.mysql.com/archives/community/使用wget命令下载tar包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.42-1ubuntu18.04_amd64.deb-bundle.tarsudotar-xvfmysql-server_5.7.42-1ubuntu18.04_amd64.deb-bu......
  • SqlServer 导入 MySql
    1、将sqlserver的数据导入到mysql中本文演示:将sqlserver中的数据库表结构和数据导入到mysql中2、sqlserver库3、navicat逆向表到模型4、转换模型为...5、选择mysql6、建模转换后导出sql7、导出sql后,在mysql所在的数据库中,运行该sql文件(该sql为表结构)8、运行完毕后,......
  • MySQL的utf8编码当中的疑问
    本文由 ChatMoney团队出品之前,在将emoji表情......
  • MySQL的utf8编码之谜
    本文由ChatMoney团队出品之前,在将emoji表情......
  • 如何安装MySQL
    一、下载 安装环境:Win1064位软件版本:5.7.24(具体版本看自己,尽量不要使用新的版本,新版本可能不太稳定)下载地址:MySQL::DownloadMySQLCommunityServer(ArchivedVersions)想要一步步下载的看下面1.找到百度界面(按照自己习惯就好)2.搜索mysql,找到官方,点击进去3.......
  • Oracle: 创建分区表、分区索引
    ORACLE创建分区表例子:--删除分区表DROPTABLECUX.CUX_PARTITION_TEST;--创建分区表,以GROUP_NAME字段的值进行分区CREATETABLECUX.CUX_PARTITION_TEST(TEST_IDNUMBER,TEST_NAMEVARCHAR2(50),GROUP_NAMEVARCHAR2(30),CREATION_DAT......
  • mysql 优化
    ##计算shmall和shmmax值memTotal=$(grepMemTotal/proc/meminfo|awk'{print$2}')totalMemory=$((memTotal/2048))shmall=$((memTotal/4))if[$shmall-lt2097152];thenshmall=2097152fishmmax=$((memTotal*1024-1))if["$shmmax"-lt429......
  • 基于SpringBoot+Vue的人事系统 毕业设计 springboot+Vue+mysql
    介绍本人事系统基于SpringBoot和Vue框架开发,旨在为企业提供高效、便捷、准确的人事管理解决方案。通过现代化的技术手段,实现了人事数据的集中管理、流程的自动化处理以及信息的实时共享,从而提高企业的人事管理效率和决策科学性。技术栈后端技术栈:Springboot+Mysql+Maven......
  • 运维文档:MySQL 数据库备份与恢复
    运维文档:MySQL数据库备份与恢复1.概述本文档旨在提供MySQL数据库备份与恢复的详细步骤和操作指南,以确保数据的安全性和可恢复性。2.备份方案2.1备份类型逻辑备份:备份数据库中的数据文件,包括数据表、视图、存储过程等。物理备份:备份整个数据库实例,包括数据文件、日......
  • 如何安装mysqlclient 1.4.6? (Python 3.6)MacO?
    我安装pipinstallmysqlclient==1.4.6--no-cache-dir但是出现错误:ld:library'ssl'notfoundclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)error:command'clang'failedwithexitstatus......