具有范围的MYSQL多个复合索引

时间:2019-04-25 18:46:30

标签: mysql sql

我对带有范围的MYSQL多个复合索引有一些疑问。 例如,如果我有以下索引:

Multiple column index in columns (A, B, C)

以及以下查询

WHERE A=2 AND B>5 AND C=3

问题:  -索引将使用(A,B,C)列或仅使用(A,B)列

那这个呢?

WHERE A=2 AND B IN (1,2,3) AND C=4

谢谢!

1 个答案:

答案 0 :(得分:0)

  

问题:-索引将使用(A,B,C)列或仅使用(A,B)列

最有可能(A,B)。索引是位置索引,因此如果上一列未使用相等,则它们将无法访问下一列。但是根据表的统计信息,全表扫描可能会更快。

  

A = 2 AND B IN(1,2,3)AND C = 4

也许:

  • 仅(A),或
  • (A,B)三次,
  • 或通过全表扫描都不做。

统计数据肯定会产生重大变化。本质上,A是否非常有选择性?如果没有,则全表扫描可能比使用索引快。