我有一个表(比如表
t
),其 col_a
上的索引是唯一的。
现在
col_a
上的索引用于以下两种情况 -
SELECT * from t WHERE(col_a,col_b) IN((x,y),(p,q));
- query_1SELECT * 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 存在的大部分时间里,“行构造函数”的优化很差。直到最近才优化了一些明显的用例。我猜你的案子被漏掉了。