MySQL 可以使用两个或多个索引搜索表行吗?
我有一个包含以下列的表格:
relation:
- type varchar(32)
- id_foo int
- id_bar int
我需要根据 type
和 presta_id
或 vario_id
搜索行。查询将如下所示:
SELECT id_foo FROM relation WHERE type = 'baz' AND id_bar = 128
SELECT id_bar FROM relation WHERE type = 'qux' AND id_foo = 256
为此表和这些搜索查询定义索引的正确方法是什么?
我应该在所有三列上放置单独的索引(type
、id_foo
、id_bar
),还是最好创建两个多列列索引 - type + id_foo
和 type + id_bar
?
最佳答案
最好创建两个索引:relation(type, id_bar)
和 relation(type, id_foo)
。
在您的情况下,两列可以按任意顺序排列。但是您需要两个索引来优化这两个查询。
MySQL 实际上有关于复合索引使用的非常好的文档。请参阅here .
关于MySQL - 基于更多索引的查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327070/