首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于具有WHERE和ORDER BY子句的内连接,最好的索引是什么?

对于具有WHERE和ORDER BY子句的内连接,最好的索引是什么?
EN

Stack Overflow用户
提问于 2016-04-11 18:41:44
回答 1查看 55关注 0票数 0

我使用的是MySQL和InnoDB。假设我有以下查询:

代码语言:javascript
复制
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。

我应该添加到FooBar表中的最佳索引是什么?

目前我在Foo表中有一个关于(Foo.column1, Foo.column2)的索引。我是否应该将Foo.id也添加到此综合索引中?顺序是什么?

我找不到任何正式的参考资料来涵盖这个主题。

EN

回答 1

Stack Overflow用户

发布于 2016-04-11 19:43:19

对于Foo来说,(Foo.column1, Foo.column2)应该足够了,你不需要在末尾添加PK,因为innodb总是在每个索引的末尾都有PK。Bar需要有一个关于fooId的索引。

运行explain <query>检查MySQL正在做什么。

对于Foo,您应该得到类型ref,在extra中不带using filesortusing index和100行。

Bar应该在extra中有refusing index类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36546411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档