整理和记录数据库索引的一些面试题:
1:联合索引
1.1:mysql建了两个联合索引分别是(a,b)和(b,a),在查询语句select a,b from table where a=x and b=x时,走的是哪一条索引?为什么?
一般在设计时候,是不会设计这种索引的,这个题面试考虑的是对索引的建立和底层优化的一些知识;
走哪个索引得MySQL的成本分析器来决定,基本上就是看a和b的区分度,可以用explain format=json去看详细的查询成本统计结果。
底层都是依赖优化器的分析。
这个问题可能不同mysql版本处理都不一样:
mysql5.6:会根据索引创建的时间先后,选择走哪个索引;
-
解决方案:真有这种情况,建议强制走哪个索引就好了;
ing。。。。。。。。