2010-10-16 18 views
0

我有一个真正让我的VPS陷入困境的mysql查询。它根据解释做一个文件扩展。我通常会自己优化查询,但这个我不确定我知道如何。如何优化这个WordPress的mysql查询?

SELECT DISTINCT SQL_CALC_FOUND_ROWS wp_posts.*,MAX((1.00 * (MATCH(wp_search_post.post_content) AGAINST ('test' IN BOOLEAN MODE))) + (2.00 * (MATCH(wp_search_post.post_title) AGAINST ('test' IN BOOLEAN MODE))) + (1.00 * (MATCH(wp_search_post.post_excerpt) AGAINST ('test' IN BOOLEAN MODE))) + (1.00 * (MATCH(wp_search_post.post_meta) AGAINST ('test' IN BOOLEAN MODE))) + (2.00 * (MATCH(wp_search_post.post_tags) AGAINST ('test' IN BOOLEAN MODE)))) AS score FROM wp_posts LEFT JOIN wp_search_post ON wp_posts.ID=wp_search_post.post_id WHERE 1=1 AND (wp_posts.post_status='publish' OR wp_posts.post_password='') AND ((MATCH(wp_search_post.post_content,wp_search_post.post_title,wp_search_post.post_excerpt,wp_search_post.post_meta,wp_search_post.post_tags) AGAINST ('test' IN BOOLEAN MODE))) GROUP BY wp_posts.ID HAVING score ORDER BY score DESC,wp_posts.post_date DESC LIMIT 60, 20; 

任何帮助,非常感谢。

回答

0

据我记得有一个已知的SQL_CALC_FOUND_ROWS与具有全文索引的表的问题。

我们在应用程序中遇到了类似的问题,我们通过从查询中删除SQL_CALC_FOUND_ROWS来解决问题,并发出单独的计数查询以获取需要时找到的结果数。

您也可以尝试一下,只需运行无查询的SQL_CALC_FOUND_ROWS查询是否有所作为。

查看详细信息link