【发布时间】:2016-04-11 10:41:44
【问题描述】:
我正在使用 MySQL 和 InnoDB。 假设我有以下查询:
SELECT id FROM
Foo
INNER JOIN
Bar
ON Foo.id = Bar.fooId
WHERE Foo.column1 = N
ORDER BY Foo.column2 DESC LIMIT 100
这里,Foo.id 是主键,Bar.fooId 是 FK。
我应该添加到Foo 和Bar 表的最佳索引是什么?
目前我在Foo 表中的(Foo.column1, Foo.column2) 上有一个索引。我是否也应该将Foo.id 添加到此复合索引中?顺序是什么?
我找不到任何正式的参考来涵盖这个主题。
【问题讨论】:
-
希望 Foo.id 是主键 & Bar.fooId 是外键。对吗?
-
@DipanwitaKundu 是的。已编辑。
-
不需要添加 foo.id 作为复合索引,就足够了。
-
选择的
id是Foo.id还是Bar.id? -
视情况而定。那个
SELECT的答案对于另一个SELECT不一定是“正确的”。 More tips.
标签: mysql indexing inner-join where-clause