mysql复合索引使用场景_mysql复合索引(联合索引)的使用场景
什么是联合索引?
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
两个或更多个列上的索引被称作复合索引。
利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。
所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。
如:建立 姓名、年龄、性别的复合索引。
create table test(
a int,
b int,
c int,
KEY a(a,b,c)
);
优: select * from test where a=10 and b>50
差: select * from test where a50
优: select * from test order by a
差: select * from test order by b
差: select * from test order by c
优: select * from test where a=10 order by a
优: select * from test where a=10 order by b
差: select * from test where a=10 order by c
优: select * from test where a>10 order by a
差: select * from test where a>10 order by b
差: select * from test where a>10 order by c
优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b=10 order by b
优: select * from test where a=10 and b=10 order by c
优: select * from test where a=10 and b=10 order by a
优: select * from test where a=10 and b>10 order by b
差: select * from test where a=10 and b>10 order by c
索引原则
1.索引越少越好
原因:主要在修改数据时,第个索引都要进行更新,降低写速度。
2.最窄的字段放在键的左边
3.避免file sort排序,临时表和表扫描.
1、复合索引使用的目的是什么?
:能形成索引覆盖,提高where语句的查询效率
2、一个复合索引是否可以代替多个单一索引?
:复合索引的使用原则是第一个条件应该是复合索引的第一列,依次类推,否则复合索引不会被使用
所以,正常情况下复合索引不能替代多个单一索引
3、在进行哪些类型的查询时,使用复合索引会比较有效?
:如果一个表中的数据在查询时有多个字段总是同时出现则这些字段就可以作为复合索引,形成索引覆盖可以提高查询的效率
4、符合索引中索引列的排序原则是什么?
:复合索引的使用原则是第一个条件应该是复合索引的第一列,依次类推
5、什么情况下不适合使用复合索引?
:建立索引的目的就是帮助查询,如果查寻用不到则索引就没有必要建立,另外如果数据表过大(5w以上)则有些字段(字符型长度超过(40))不适合作为索引,另外如果表是经常需要更新的也不适合做索引
mysql复合索引使用场景_mysql复合索引(联合索引)的使用场景相关推荐
- mysql 建立索引的例子_mysql建立合适的索引的例子
在mysql数据库中,其实建索引也是一门学问,一个表中,索引并不是越多越好,而是适合你的业务才最重要.那么建立索引的时候,我们应该从以下几点去考量. 1. 索引字段越小越好,像varchar(10)肯 ...
- 【MySQL】索引原理(三):联合索引(最左前缀原则),覆盖索引,索引条件下推
准备工作,下面的演示都是基于user_innodb表: DROP TABLE IF EXISTS `user_innodb`; CREATE TABLE `user_innodb` (`id` big ...
- mysql复合索引的应用场景_mysql复合索引(联合索引)的使用场景
什么是联合索引? 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支 ...
- mysql索引优化规则_Mysql优化选择最佳索引规则
索引的目的在于提高查询效率,其功能可类比字典,通过该索引可以查询到我们想要查询的信息,因此,选择建立好的索引十分重要,以下是为Mysql优化选择最佳索引的方法步骤: 1. 首先列出查询中所有使用的表, ...
- mysql教程联合索引_MySQL中的联合索引学习教程
联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支持a | a,b| ...
- mysql的学习要点_MySQL中的联合索引的学习要点总结
MySQL中的联合索引的学习要点总结 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a ...
- mysql联合索引案例_mysql多个联合索引的案例分析
mysql多个联合索引的案例分析 发布时间:2020-11-23 14:54:29 来源:亿速云 阅读:61 作者:小新 小编给大家分享一下mysql多个联合索引的案例分析,相信大部分人都还不怎么了解 ...
- mysql联合索失效_mysql联合索引注意事项,解决为啥联合索引无效的问题
在数据查询的时候合理利用索引才更好地提高查询效率.今天遇到一个数据量不算太大(1000万左右)的表,但是查询特别慢,建立了userid,logtype,fromid 发现索引无效,查阅相关资料后发现联 ...
- mysql 聚合索引和聚簇索引_MySQL 聚簇索引 和覆盖索引
一.聚簇索引 1.聚簇索引并不是一种单独所以,而是一种数据储存方式. InnoDB 的聚簇索引实际上在同一结构中保存了B-Tree 索引和数据行. 2.当表有聚簇索引时,它的数据行实际上存放在索引的叶 ...
最新文章
- 转 LIST INCARNATION OF DATABASE
- DSP程序中段的定义和作用
- 如何安装透明窗口主题Emerald在Ubuntu 13.04/12.10/12.04中-PPA
- service层的方法上使用@Transactional注解,程序发生异常没有回滚
- 矩阵位移法matlab编程,矩阵位移法_MATLAB_GUI.doc
- Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
- Pyomo 优化建模
- 贷后风控中逾期案件差异化的分配逻辑
- 管家婆服务器备份文件夹,[任我行]管家婆软件的使用方法,管家婆辉煌提示备份报错3202...
- java pv uv 统计_shell统计pv和uv、独立ip的方法
- cardboard 效果_如何在iPhone上设置Google Cardboard
- Wireshark网络安全之传输层安全-UDP泛洪(UDP Flood)
- Packet Tracer的使用(一)
- undefinednbsp;methodnbsp;`titl…
- StackOverflow上87万访问量的问题:什么是“找不到符号”?
- 移动应用广告对接:为什么SDK是最佳选择?
- 使用python多线程下载网络小说并结合calibre制作电子书
- 如何备份思科cisco路由器配置
- 无线网卡出现windows仍在设置此设备的类配置(代码56)的问题
- Linux版足球游戏,在Linux中踢实况足球(组图)