主页 > 知识库 > mysql的联合索引(复合索引)的实现

mysql的联合索引(复合索引)的实现

热门标签:地图标注费用是多少 武汉网络外呼系统服务商 电话外呼系统改号 外呼系统打电话上限是多少 怎样在地图标注销售区域 曲靖移动外呼系统公司 啥是企业400电话办理 百应电话机器人优势 南昌三维地图标注

联合索引

本文中联合索引的定义为(MySQL):

ALTER TABLE `table_name` ADD INDEX (`col1`,`col2`,`col3`);

联合索引的优点

若多个一条SQL,需要多个用到两个条件

SELECT * FROM `user_info` WHERE username='XX',password='XXXXXX';

当索引在检索 password字段的时候,数据量大大缩小,索引的命中率减小,增大了索引的效率。

符合索引的索引体积比单独索引的体积要小,而且只是一个索引树,相比单独列的索引要更加的节省时间复杂度和空间复杂度

联合索引命中的本质(最左匹配的理解)

定义

当创建(col1,col2,col3)联合索引时,相当于创建了(col)单列索引,(clo1,clo2)联合索引以及(col1,col2,col3)联合索引想要索引生效,只能使用col1col1,col2col1,col2,col3三种组合;当然,col1,col3组合也可以,但实际上只用到了col1的索引,col3并没有用到!

图解

通俗理解

联合索引相当于一个按照姓氏——名字的一个电话簿,只能先确定姓氏才可以命中索引,下列可以正确命中联合索引的语句( = IN直接的字段都可以乱序,MySQL的查询优化器可以优化成索引识别的形式)

-- 只命中 col1,col2
SELECT * FROM `table_name` WHERE `col1`='XX';
-- 命中col1,col2。col1,col2的顺序可以颠倒
SELECT * FROM `table_name` WHERE `clo1`='XX',`clo2`='XXX'; 
SELECT * FROM `table_name` WHERE `clo2`='XXX', `clo1`='XX'; 
-- 命中col1,col2,col3,同理,三个列的顺可以颠倒
SELECT * FROM `table_name` WHERE `col1`='X',`col2`='XX',`col3`='XXX';
SELECT * FROM `table_name` WHERE `col1`='X',`col3`='XX',`col2`='XXX';
SELECT * FROM `table_name` WHERE `col2`='X',`col3`='XX',`col1`='XXX';

到此这篇关于mysql的联合索引(复合索引)的实现的文章就介绍到这了,更多相关mysql 联合索引 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • MySQL 独立索引和联合索引的选择
  • 深入浅析Mysql联合索引最左匹配原则
  • MySQL联合索引功能与用法实例分析
  • MySQL联合索引用法示例
  • MySQL中的联合索引学习教程
  • mysql联合索引的使用规则

标签:沧州 甘南 锦州 资阳 随州 黑河 荆州 吉林

巨人网络通讯声明:本文标题《mysql的联合索引(复合索引)的实现》,本文关键词  mysql,的,联合,索引,复合,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《mysql的联合索引(复合索引)的实现》相关的同类信息!
  • 本页收集关于mysql的联合索引(复合索引)的实现的相关信息资讯供网民参考!
  • 推荐文章