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编辑  收藏  举报