1. 程式人生 > >mysql in操作 索引優化的一個疑問

mysql in操作 索引優化的一個疑問

tree 一個 組合索引 範圍 組合 並且 and bsp 包含

茲有 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列?

mysql in操作 索引優化的一個疑問