mysql in操作 索引优化的一个疑问
兹有 Index (A,B,C) ——组合索引多字段是有序的,并且是个完整的BTree 索引。
- 下面条件可以用上该组合索引查询:
- A>5
- A=5 AND B>6
- A=5 AND B=6 AND C=7
- A=5 AND B IN (2,3) AND C>5
- 下面条件将不能用上组合索引查询:
- B>5 ——查询条件不包含组合索引首列字段
- B=6 AND C=7 ——查询条件不包含组合索引首列字段
- 下面条件将能用上部分组合索引查询:
- A>5 AND B=2 ——当范围查询使用第一列,查询条件仅仅能使用第一列
- A=5 AND B>6 AND C=2 ——范围查询使用第二列,查询条件仅仅能使用前二列
- A=5 AND B IN (2,3) AND C>5 , 会使用到索引的全部字段. 原理是什么?是自动优化拆分成 A=5 and b=2 and c>5 or a=5 b=3 and c>5两个SQL吗? 当IN的数量达到多少的时候,索引只能用A,B列,而用不到C列?
posted on 2018-08-10 12:29 songxinya 阅读(1590) 评论(0) 编辑 收藏 举报