gpt4 book ai didi

mysql - GROUP BY 和 ORDER BY 子句导致查询速度慢

转载 作者:行者123 更新时间:2023-11-30 00:41:54 25 4
gpt4 key购买 nike

我有一个执行很长时间的以下查询。 Article_category 和 Article 表都有大约 250k 行。我尝试了一些多列索引,但没有什么可以加快查询速度。目前的EXPLAIN是这样的(当前使用的状态索引由article.status和article.published组成,优化器当前决定使用它)。

您能给我一些关于创建哪个索引来加快查询速度的建议吗?

1 SIMPLE a ref PRIMARY,status,published status 1 const 109338 使用 where;使用临时的;使用文件排序

1 SIMPLE ac ref 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

最佳答案

您应该在加入之前限制您的结果,例如这样(未经测试!):

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
(
SELECT `id` FROM `category` WHERE `id` IN (109,118,38,39,40,62,63,119,110,111,112,113,114,115,116,117,121,122)
) `c` JOIN `article` `a`
JOIN `article_category` `ac` ON `ac`.`article_id` = `a`.`id`
JOIN ON `ac`.`category_id`=`c`.`id`
WHERE `a`.`status`='published' AND a.published < "2014-02-03 22:45:00"
GROUP BY `a`.`id`
ORDER BY `a`.`published` DESC
LIMIT 0,8

关于mysql - GROUP BY 和 ORDER BY 子句导致查询速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21705418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com