gpt4 book ai didi

MySQL ORDER BY DESC 很快,但 ASC 很慢

转载 作者:IT老高 更新时间:2023-10-29 00:17:12 31 4
gpt4 key购买 nike

出于某种原因,当我按 DESC 对查询进行排序时,速度非常快,但如果按 ASC 排序,则速度非常慢。

这大约需要 150 毫秒:

SELECT posts.id
FROM posts USE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published DESC
LIMIT 0, 50;

这大约需要 32 秒:

SELECT posts.id
FROM posts USE INDEX (published)
WHERE posts.feed_id IN ( 4953,622,1,1852,4952,76,623,624,10 )
ORDER BY posts.published ASC
LIMIT 0, 50;

两个查询的 EXPLAIN 相同。

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1 SIMPLE posts index NULL published 5 NULL 50 Using where

我已将其追踪到“USE INDEX(已发布)”。如果我把它去掉,那么两种方式的表现都是一样的。但是 EXPLAIN 显示查询总体上效率较低。

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1 SIMPLE posts range feed_id feed_id 4 \N 759 Using where; Using filesort

这是表格。

CREATE TABLE `posts` (
`id` int(20) NOT NULL AUTO_INCREMENT,
`feed_id` int(11) NOT NULL,
`post_url` varchar(255) NOT NULL,
`title` varchar(255) NOT NULL,
`content` blob,
`author` varchar(255) DEFAULT NULL,
`published` int(12) DEFAULT NULL,
`updated` datetime NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `post_url` (`post_url`,`feed_id`),
KEY `feed_id` (`feed_id`),
KEY `published` (`published`)
) ENGINE=InnoDB AUTO_INCREMENT=196530 DEFAULT CHARSET=latin1;

有解决办法吗?

最佳答案

你的索引是降序排列的,所以当你要求升序时,它需要做更多的工作才能把它恢复到那个顺序

关于MySQL ORDER BY DESC 很快,但 ASC 很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2886575/

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