2 winy lm winy_lm 于 2016.03.01 11:24 提问

关于sql复合索引没有生效的问题

现在有张表 t_order,其中有一些字段,我给其中a,b,c[三个均为非主键]三个字段
增加了一个复合索引,顺序也是为a,b,c....

问题:以下哪种查询是用了索引的,因为跟我之前的理解冲突了,希望大神帮忙解答一下!!
1. where a = ''
2. where a = '' and b = ''
3. where a = '' and b='' and c =''

我一直认为这三个都是用了索引的,但是我用执行计划分析了一下,发现1是没有用到
索引的,那么是哪里出了问题呢?

2个回答

winy_lm
winy_lm   2016.04.06 10:27
已采纳

我的上面的是对的,后来查看执行计划又有了!!!

qq_20039385
qq_20039385   2016.03.01 14:41

联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

qq_20039385
qq_20039385 回复winy_lm: 刚问过我同事,他说只有3用了索引,因为索引列和查询字段顺序要对应,和顺序有关,不知道对不对,坐等高手来解答
2 年多之前 回复
winy_lm
winy_lm 你的理解跟我之前的理解是一样的,但是现在的情况是单独以a去执行查询的时候执行计划是没显示通过索引的,你可以试一下,所以才会有了我上面的问题!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
数据库优化之复合索引不起作用的原因
数据库优化之复合索引不起作用的原因1,情景描述:最近在做数据统计这一块,有一个功能然后使用起来觉得非常卡,然后就开始找所在原因。 2,查找原因 1,把sql语句打印出来放到mysql工具中执行,发现了有一条语句执行的非常慢,目标锁定此sql 2,查找关于如何优化sql的相关资料,基本上可确定为索引问题 3,查看表字段,表中已设复合索引,但为何复合索引没起到作用 4,后来查资料
MySQL的索引机制,复合索引的使用原则
一般都会用书本中的目录来介绍索引机制,其实有些书本会有专门的快速检索附录,就很类似于数据库的索引。 MySQL的索引包括4类:主键索引(primary key)、唯一索引(unique)、常规索引(index)、全文索引(fullindex)。 Show index from table_name; --查看表中的索引 Show status like 'Handler_read%' --查看索
复合索引顺序选择问题
【全文转自:http://blog.itpub.net/17203031/viewspace-692364】 索引是我们经常选择的数据表检索优化方案之一。其中,复合索引是我们经常选择的策略。那么,构建索引列的顺序上,有何种差异和需要注意的方面呢?下面我们通过实验来进行说明。   实验环境说明   准备数据表和实验环境。索引列的差异,主要体现在选择性上,我们通过构建不同选择性的列来进行试验
mysql复合索引最左原则不会用到的情况
mysql复合索引最左原则不会用到的情况 复合索引也叫组合索引,在我们经常用多个字段联合查询时会用到. 首先如图中建立的索引符合最左原则 即这个复合索引相当于建立了3个索引 1. 姓名 2. 姓名,年龄 3. 姓名,年龄,性别 如果查询条件为图中三种情况索引不会被用到 如果查询条件为姓名+性别 那么姓名的索引会被用到,性别的就不会用索引,会直接在当前姓名结果下面查询. 复合...
关于数据库索引的理解(实践总结)
关于数据库索引的理解(实践总结) 关于复合索引,非复合索引的效率问题!
复合索引在什么情况下使用
http://topic.csdn.net/t/20060813/16/4946416.html 1、复合索引使用的目的是什么? :能形成索引覆盖,提高where语句的查询效率 2、一个复合索引是否可以代替多个单一索引? :复合索引的使用原则是第一个条件应该是复合索引的第一列,依次类推,否则复合索引不会被使用 所以,正常情况下复合索引不能替代多个单一索引
mysql如何确认复合索引有使用到哪些索引字段的测试
一、基本信息 MariaDB [lots]> select @@version; +---------------------+ | @@version           | +---------------------+ | 10.0.20-MariaDB-log | +---------------------+ 1 row in set (0.00 sec) mysql
sqlserver中复合索引和include索引到底有多大区别?
一:从数据页角度看问题 1. 做两个表,插入两条数据,在test1上做复合索引,在test2上做include索引,如下图: 1 -- 在test1表中插入2条记录 2 CREATE TABLE test1(ID int,Name CHAR(5),Email CHAR(10)) 3 INSERT INTO test1 VALUES(1,'aaaaa','111@qq.com'
SQL Server学习之复合索引
概要什么是单一索引,什么又是复合索引呢? 何时新建复合索引,复合索引又需要注意些什么呢?本篇文章主要是对网上一些讨论的总结。一.概念单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上。用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引)。复合索引的创建方法与创建单一索引的方法完全一样。但复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引。当表的行数远远大于索引键的数目
复合索引的优点及注意事项
概念:     单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;     用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);     复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引;     同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引;     设计索引的一个重要原则就是能用窄索引不用宽索