我的主机声称以下SQL查询正在使服务器超载并导致其执行缓慢并威胁要禁用我的帐户。我似乎无法找到瓶颈 - 任何人都可以帮助我发现它的来源吗?
1分钟前在数据库上执行了8秒 - > mydb_name。
SELECT * FROM tsk_posts
LEFT JOIN tsk_term_relationships ON
(tsk_posts.ID = tsk_term_relationships.object_id)
LEFT JOIN tsk_term_taxonomy ON
(tsk_term_relationships.term_taxonomy_id = tsk_term_taxonomy.term_taxonomy_id)
WHERE
tsk_posts.post_status = 'publish'
AND
tsk_posts.post_type = 'post'
AND
tsk_term_taxonomy.taxonomy = 'category'
AND
( tsk_term_taxonomy.term_id = 4 OR tsk_term_taxonomy.term_id = 103 OR
tsk_term_taxonomy.term_id = 19 OR tsk_term_taxonomy.term_id = 20 OR
tsk_term_taxonomy.term_id = 5 OR tsk_term_taxonomy.term_id = 2 OR
tsk_term_taxonomy.term_id = 14 )
ORDER BY RAND()
LIMIT 1
非常感谢。
答案 0 :(得分:2)
“按rand排序”可能是一个非常昂贵的查询。必须生成一个随机数,然后用它来访问结果集。
每个表中有多少行? 有指数吗? 制定解释计划,以便更好地了解成本的位置。