为什么索引没有被使用?

问题描述 投票:0回答:1

我有一个表(比如表

t
),其
col_a
上的索引是唯一的。

现在

col_a
上的索引用于以下两种情况 -

  • SELECT * from t WHERE(col_a,col_b) IN((x,y),(p,q));
    - query_1
  • SELECT * from t WHERE(col_a = x and col_b = y) OR (col_a = p and col_b = q);
    - query_2

但当我这样查询时就不是了 -

  • SELECT * from t WHERE(col_b,col_a) IN((y,x),(q,p));
    - query_3

事实上,我没有发现query_1和query_2、query_3的查询风格有什么区别。对于MySQL来说,它们的功能不是一样的吗?我期待在这里使用索引。

mysql innodb b-tree
1个回答
0
投票

在 MySQL 存在的大部分时间里,“行构造函数”的优化很差。直到最近才优化了一些明显的用例。我猜你的案子被漏掉了。

© www.soinside.com 2019 - 2024. All rights reserved.