SQL重载 - 奇怪的查询

时间:2013-04-25 12:41:57

标签: taxonomy mysql

我的主机声称以下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

非常感谢。

1 个答案:

答案 0 :(得分:2)

“按rand排序”可能是一个非常昂贵的查询。必须生成一个随机数,然后用它来访问结果集。

每个表中有多少行? 有指数吗? 制定解释计划,以便更好地了解成本的位置。