Wordpress慢查询

时间:2013-04-12 09:48:40

标签: mysql wordpress mysql-slow-query-log

我有一个wordpress博客和我的共享托管公司警告我有关活动缓慢。

在我的mysql slowlog.log中,我有必要的查询,需要大约2和d 3(我认为秒不是毫秒)

这是日志中的查询:

# Query_time: 2  Lock_time: 0  Rows_sent: 25  Rows_examined: 36266
    SELECT l.ID, post_content, post_name, post_author, post_parent, post_modified_gmt, post_date, post_date_gmt
                    FROM (
                        SELECT ID FROM wp_posts 
                            WHERE post_status = 'publish'
                            AND post_password = ''
                            AND post_type = 'my_post_type'

                            ORDER BY post_modified ASC
                            LIMIT 25 OFFSET 9925 ) o
                        JOIN wp_posts l
                        ON l.ID = o.ID
                        ORDER BY l.ID;

我的问题是:这个查询是核心查询吗?在这种情况下,正常需要3秒钟?如果没有,我该怎样补救?我的意思是核心查询,如果它不是一个插件或主题函数生成此查询,因为我还没有在主题的函数中找到它.php

我在日志中有另一个慢查询:

# Query_time: 2  Lock_time: 0  Rows_sent: 1  Rows_examined: 29232
SELECT post_modified_gmt FROM wp_posts WHERE post_status IN ('publish','inherit') AND post_type = 'my_post_type' ORDER BY post_modified_gmt ASC LIMIT 1 OFFSET 2999;

这里的问题相同,是核心查询还是与之相关的插件......

请注意我已经安装了WP超级缓存,我的网站加载速度更快,但我仍然在slowlog.log中有这些慢查询

PS:我是一家可靠的hsting公司(infomaniak),他们把我的博客放在Dedicated VPS机器上15天让我解决问题

感谢您的帮助,对不起我非常糟糕的英语

------------------------------------------- EDIT --- ------------------------------------

安装wp超级缓存后仍然没有这些查询:(

# Query_time: 2  Lock_time: 0  Rows_sent: 25  Rows_examined: 49908
SELECT l.ID, post_content, post_name, post_author, post_parent, post_modified_gmt, post_date, post_date_gmt
                FROM (
                    SELECT ID FROM wp_posts 
                        WHERE post_status = 'publish'
                        AND post_password = ''
                        AND post_type = 'my_post_type'

                        ORDER BY post_modified ASC
                        LIMIT 25 OFFSET 23550 ) o
                    JOIN wp_posts l
                    ON l.ID = o.ID
                    ORDER BY l.ID;

3 个答案:

答案 0 :(得分:2)

好的,我发现这些查询的问题是什么:

首先,没有核心查询它们是由插件生成的,这个插件被称为“Yoast WordPress SEO”,它恰好是插件的站点地图部分。 “file:class-sitemaps.php”

当我禁用插件的站点地图部分时,我在slowlog.log文件中没有这些查询。

答案 1 :(得分:0)

这两个查询是核心查询,您无法将其删除。

最好的方法是使用缓存插件(如wp超级缓存),

答案 2 :(得分:0)

我正在将此查询作为慢速查询

SELECT SQL_CALC_FOUND_ROWS  wp_posts.ID FROM wp_posts  WHERE 1=1  AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish')  ORDER BY wp_posts.post_date DESC LIMIT 0, 10

实际上我手动将posts_per_pages设置为16,