MySql Query very slow

时间:2014-03-02 作者:Johannes Ruof

我的网站上有一个查询问题。当我加载页面时,速度非常慢,只有在超过12秒后,内容才会开始显示。我安装了一个调试插件,并找到了耗时很长的查询。插件的输出如下:

时间:12315.2ms(12.315196037292s)

查询:

SELECT SQL_CALC_FOUND_ROWS meruca_posts.ID 
FROM meruca_posts 
WHERE 1=1 
AND (
    meruca_posts.ID NOT IN (
        SELECT object_id
        FROM meruca_term_relationships
        WHERE term_taxonomy_id IN (14)
    )
)
AND meruca_posts.post_type = \'post\' 
AND (
    meruca_posts.post_status = \'publish\' 
    OR meruca_posts.post_status = \'private\'
)
GROUP BY meruca_posts.ID ORDER BY meruca_posts.post_date DESC LIMIT 0, 10
功能:WP_Query->get_posts() (meruca_ 是我的表格前缀)

我对mysql只有基本的了解,但我真的不知道是什么原因导致这需要这么长时间。如果有人知道我可以改变什么,我将不胜感激。目前该网站上大约有5千篇帖子,数量不多,而且它运行在一个专用服务器上,理论上,该服务器应该有足够的资源来进行任何查询。

1 个回复
SO网友:luciole135

必须使用临时表和别名:

SELECT SQL_CALC_FOUND_ROWS * 
FROM meruca_posts 
WHERE ID NOT IN (SELECT ID 
            FROM (
                    SELECT object_id as ID
                    FROM meruca_term_relationships
                    WHERE term_taxonomy_id IN (14)
                )
            AS temp_object)
AND post_type = \'post\' 
AND post_status IN (\'publish\',\'private\') 
GROUP BY ID ORDER BY post_date DESC LIMIT 0, 10

结束

相关推荐

支持Google 1.10.2而不支持WordPress 1.10.2的jQuery插件

我正在Wordpress插件中定制JQuery Colorbox的实现。但是,它不适用于我的默认Wordpress安装。稍加修改后,最终还是包含了JQuery库。这两条线都不起作用:<script src=\'http://xpisobsolete.com/wp-includes/js/jquery/jquery.js?ver=1.10.2\'></script><script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.10