【发布时间】:2017-01-14 07:01:28
【问题描述】:
不久前,我在特定查询方面获得了一些帮助。这是链接:SQL Group BY using strings in new columns
我的查询类似于:
SELECT event_data, class_40_winner, class_30_winner
FROM events e
LEFT JOIN (SELECT result_event, name AS class_40_winner
FROM results
WHERE class = 40 AND position = 1) c40 ON e.id = c40.result_event
LEFT JOIN (SELECT result_event, name AS class_30_winner
FROM results
WHERE class = 30 AND position = 1) c30 ON e.id = c30.result_event
我现在已经在我的数据库中输入了足够的数据(22,000 行),这个查询需要 6 多秒才能完成。 (我的实际查询比上面的要大,因为它现在有 4 个连接。)
我在查询中使用了“解释”功能来查看。 “结果”表中的每个查询都提取了 22,000 行,所以这似乎是问题所在。
我已经做了一些研究,听起来我应该能够在“结果”表上对相关列进行索引,以帮助加快速度。但是当我这样做时,它实际上将我的查询减慢到大约 10 秒。
对我可以做些什么来改进这个查询有什么建议吗?
【问题讨论】:
-
不要做子选择 - 只是加入
-
此解决方案将数据检索问题与数据显示问题混为一谈。处理应用程序代码中的显示问题。
标签: mysql sql indexing query-performance