是否可以为了覆盖索引而在联合索引中增加列?
比如常用一个查询语句类似
select c1,c2,c3 from tt where c1='a' and c2='b'
我们在设计联合索引的时候是三列都放进去还是只放where后的两列?
个人感觉,都放进的好处是不用回表了,能够索引覆盖,c3虽然不是查询条件但也等于空间换时间了能够有效提高查询效率。
但又好像在哪儿看到过,说查询结果列(仅出现在select后的列)不应该加入到联合索引中。所以问问各位一般怎么处理?
比如常用一个查询语句类似
select c1,c2,c3 from tt where c1='a' and c2='b'
我们在设计联合索引的时候是三列都放进去还是只放where后的两列?
个人感觉,都放进的好处是不用回表了,能够索引覆盖,c3虽然不是查询条件但也等于空间换时间了能够有效提高查询效率。
但又好像在哪儿看到过,说查询结果列(仅出现在select后的列)不应该加入到联合索引中。所以问问各位一般怎么处理?