【发布时间】:2012-03-23 19:11:30
【问题描述】:
我正在尝试通过复合索引从具有 PRIMARY KEY (a, b) 的表中获取几条记录
SELECT * FROM table WHERE (a, b) IN ((1,2), (2,4), (1,3))
问题是,即使我 FORCE INDEX (PRIMARY),MySQL 也没有使用索引。
EXPLAIN SELECT 显示 null possible_keys。
为什么没有 possible_keys?
通过复合键检索多行的最佳方法是什么:
- 使用 OR
- 使用 UNION ALL
- 使用 WHERE () IN ((),())
附:查询结果等于
SELECT * FROM table WHERE (a = 1 AND b = 2) OR (a = 2 AND b = 4) OR (a = 1 AND b = 3)
谢谢
【问题讨论】:
标签: mysql indexing composite-key query-performance where-in