我们大型Wordpress安装上的作者喜欢使用内容搜索功能。尽管此功能很方便,但其查询的复杂性大大降低了数据库的速度。以下是几分钟前我在慢速查询日志中找到的一个SQL查询示例:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
AND (
((wp_posts.post_title LIKE \'%Made%\') OR (wp_posts.post_content LIKE \'%Made%\'))
AND ((wp_posts.post_title LIKE \'%in%\') OR (wp_posts.post_content LIKE \'%in%\'))
AND ((wp_posts.post_title LIKE \'%the%\') OR (wp_posts.post_content LIKE \'%the%\'))
AND ((wp_posts.post_title LIKE \'%shade:%\') OR (wp_posts.post_content LIKE \'%shade:%\'))
AND ((wp_posts.post_title LIKE \'%Easy%\') OR (wp_posts.post_content LIKE \'%Easy%\'))
AND ((wp_posts.post_title LIKE \'%tips%\') OR (wp_posts.post_content LIKE \'%tips%\'))
AND ((wp_posts.post_title LIKE \'%to%\') OR (wp_posts.post_content LIKE \'%to%\'))
AND ((wp_posts.post_title LIKE \'%care%\') OR (wp_posts.post_content LIKE \'%care%\'))
AND ((wp_posts.post_title LIKE \'%for%\') OR (wp_posts.post_content LIKE \'%for%\'))
AND ((wp_posts.post_title LIKE \'%your%\') OR (wp_posts.post_content LIKE \'%your%\'))
AND ((wp_posts.post_title LIKE \'%outdoor%\') OR (wp_posts.post_content LIKE \'%outdoor%\'))
AND ((wp_posts.post_title LIKE \'%furniture%\') OR (wp_posts.post_content LIKE \'%furniture%\'))
)
AND wp_posts.post_type = \'s5_post\'
AND (
wp_posts.post_status = \'publish\'
OR wp_posts.post_status = \'future\'
OR wp_posts.post_status = \'draft\'
OR wp_posts.post_status = \'pending\'
OR wp_posts.post_status = \'private\'
)
ORDER BY wp_posts.post_date DESC LIMIT 0, 20
看看那家伙的身材!难怪它跑得很慢。我很想听听关于如何对这个功能进行一些调整以提高效率的想法。(我已经有了一些自己的想法;希望你的比我的好!:)