gpt4 book ai didi

mysql - 使用限制为 1 的 order by 时查询速度慢

转载 作者:搜寻专家 更新时间:2023-10-30 20:34:50 25 4
gpt4 key购买 nike

我在 mysql 中有一个表,其中包含超过 8000 万条记录。在 MYISAM 引擎中。

当我运行这个查询时

SELECT id FROM mytable WHERE (key1=-5) AND key2=467476  ORDER BY id  DESC LIMIT 1

查询很慢,5 分钟后我必须终止查询以释放表。

但是当我只是增加限制大小时,这个查询在 44 毫秒内成功运行

例如(我只是增加限制大小):

SELECT id FROM mytable WHERE (key1=-5) AND key2=467476  ORDER BY id  DESC LIMIT 2

现在为了解决这个问题,我尝试了下面的查询并且这个工作成功了(这是临时解决方案)

 SELECT id FROM (SELECT id FROM mytable WHERE (key1=-5) AND key2=467476  ORDER BY id  DESC LIMIT 2) AS tbl ORDER BY id DESC LIMIT 1

Note : id is primary and auto increment !

更新:

key1 ==> folder_id

key2 ==> userid

 CREATE TABLE `bm60_mails` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userid` int(11) NOT NULL DEFAULT '0',
`betreff` varchar(255) CHARACTER SET utf8 NOT NULL,
`von` varchar(255) CHARACTER SET utf8 NOT NULL,
`an` varchar(255) CHARACTER SET utf8 NOT NULL,
`cc` varchar(255) CHARACTER SET utf8 NOT NULL,
`body` longtext NOT NULL,
`folder` int(11) NOT NULL,
`datum` int(11) NOT NULL DEFAULT '0',
`trashstamp` int(11) NOT NULL,
`priority` enum('low','normal','high') NOT NULL,
`fetched` int(11) NOT NULL DEFAULT '0',
`msg_id` varchar(128) CHARACTER SET utf8 NOT NULL,
`virnam` varchar(128) CHARACTER SET utf8 NOT NULL,
`trained` tinyint(4) NOT NULL DEFAULT '0',
`refs` text CHARACTER SET utf8 NOT NULL,
`flags` int(11) NOT NULL DEFAULT '-1',
`size` int(11) NOT NULL,
`color` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `mailUser` (`userid`),
KEY `mailFlags` (`flags`),
KEY `mailFolder` (`folder`)
) ENGINE=MyISAM AUTO_INCREMENT=95953499 DEFAULT CHARSET=latin1

最佳答案

我怀疑如果您在 (key1, key2, id) 上创建复合索引,您的问题就会消失。

id 列也包括在内,因为它在 MyISAM 表中并不隐含,尽管它在 InnoDB 表中。

关于mysql - 使用限制为 1 的 order by 时查询速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45816644/

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