Mysql 查询需要优化,有人能帮忙吗?
从问题集答案顺序中按兰德选择* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa *对不起,我在那里失去了镇静 ORDER BY RAND意味着必须扫描和排序整个表。即使查询的整个剩余部分正确地命中了每个索引,如果表中有大量数据,这也将是您的瓶颈。从你问这个问题的事实来看,我敢打赌你有性能问题Mysql 查询需要优化,有人能帮忙吗?,mysql,Mysql,从问题集答案顺序中按兰德选择* aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
除了这一点一般性的建议,你能不能发布一个查询的输出 看起来您希望在IT安全站点上没有堆栈溢出。欢迎!在接下来的几分钟内,您的问题将移至StackOverflow。这个网站致力于编程问题,我们认为这是问题所在。您应该熟悉一些站点之间的差异,以及格式。在本例中,我在每行的开头添加了四个空格,以表示您的代码是代码,并且应该按照代码的格式进行格式化。此外,您没有向我们说明所有这些表是什么。。。您有许多名称相似的表被连接在一起,我们中很少有人想坐下来用图表表示您的查询以便理解它。你应该就你的问题提供一些背景资料。需要提及的是表是什么,它们之间的关系如何,为什么子查询按rand排序,以及除了优化之外您还想获得什么!
SELECT tmp.question_set_id,
qs.sort_order, qa.type, qa.entities, qa.segment, qa.number_entities, qa.display,
q.content, qa.value, m.title as media_title, m.content as media_content
FROM question_set_answer qsa
LEFT JOIN
(SELECT * FROM question_set_answer ORDER BY RAND()) tmp ON (qsa.id= tmp.id)
JOIN question_set qs ON qs.id = tmp.question_set_id
JOIN question_answer qa ON qa.id = tmp.question_answer_id
JOIN question q ON q.id = qa.question_id
LEFT JOIN
(SELECT component_id, title, content FROM media WHERE component ='question_answer')
m ON m.component_id = tmp.question_answer_id
WHERE qs.component_id = 142
AND qs.component = 'game_level'
GROUP BY tmp.question_set_id
ORDER BY qsa.id