问题描述
- 关于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是没有用到
索引的,那么是哪里出了问题呢?
解决方案
我的上面的是对的,后来查看执行计划又有了!!!
解决方案二:
联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。
时间: 2024-09-26 16:32:02