我有一个执行很长时间的以下查询。 article_category和article表都有大约250k行。我尝试了一些多列索引,但没有什么会加快查询速度。当前的EXPLAIN是这样的(当前使用的状态索引由article.status和article.published组成,当前决定使用它的优化器)。GROUP BY和ORDER BY子句导致查询速度慢
你能给我一些建议哪些索引来创建加快此查询?
1 SIMPLE a ref PRIMARY,status,published status 1 const 109338使用where;使用临时;使用文件排序
1简洁的AC参考PRIMARY,fk_article_category_category_id_category_id PRIMARY 4 e15.a.id 1使用其中
1简单的C eq_ref PRIMARY PRIMARY 4 e15.ac.category_id 1
SELECT SQL_NO_CACHE `a`.`id`,`a`.`title`,`a`.`perex`,`a`.`published`,`a`.`updated`,`a`.`article_type_id`,`a`.`tag` ,`ac`.`category_id`,`c`.`name`,`a`.`top_hp`,`ac`.`top_category`,`a`.`is_pr`,`a`.`seo_title`,`c`.`id_domain`
FROM `article` `a`
JOIN `article_category` `ac` ON `ac`.`article_id` = `a`.`id`
JOIN `category` `c` ON `ac`.`category_id`=`c`.`id`
WHERE `ac`.`category_id` IN (109,118,38,39,40,62,63,119,110,111,112,113,114,115,116,117,121,122)
AND `a`.`status`='published' AND a.published < "2014-02-03 22:45:00"
GROUP BY `a`.`id`
ORDER BY `a`.`published` DESC
LIMIT 0,8
此执行(280多个)更差(当固定),但由于换一个试试:-) –
也许你可以重新设计查询,该“其中‘a’......”条款也在加入之前执行 – alexbrickwedde