首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL查询优化左连接

mySQL查询优化左连接
EN

Stack Overflow用户
提问于 2011-03-02 18:38:16
回答 2查看 253关注 0票数 1

我需要从一个问题表中获取一些数据,然后离开JOIN产品答案。我需要一个特定类别的所有问题的列表(总共大约200个类别中的16个类别),然后在某个产品id的问题旁边列出产品答案。

代码语言:javascript
复制
SELECT `questions`.`id`, `questions`.`text`, `questions`.`catalogue_id`, `productanswers`.`answer` 

FROM `questions` 

LEFT JOIN `productanswers` ON `productanswers`.`question_id` = `questions`.`id` 

AND product_id = '2001682' 

WHERE `catalogue_id` IN (1234912,1234913,1234914) 

ORDER BY `catalogue_id`

它返回了我预期的大约17个结果。这个产品没有答案的问题都是空的,太棒了!

问题是查询大约需要23秒才能执行:-o这使得包含所有目录问题的完整查询变得不可能。

我如何优化查询,或者您有其他想法吗?

谢谢,Taff

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-02 18:42:23

question_idproduct_id上一起添加复合(多列)索引:

代码语言:javascript
复制
ALTER TABLE productanswers ADD KEY(question_id, product_id)

注意:根据question_idproduct_id的选择性,您可能希望切换索引中的列顺序

有关复合索引的更多信息,请参见Docs

票数 3
EN

Stack Overflow用户

发布于 2011-03-02 18:46:18

此外,您应该在所有的id列上都有索引,但我猜您有这个。另一个信息来源是explain语句:http://dev.mysql.com/doc/refman/5.0/en/using-explain.html

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

https://stackoverflow.com/questions/5166247

复制
相关文章

相似问题

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