gpt4 book ai didi

mysql - 为什么 "where id in (n1, n2, n3, ..., n2000)"速度非常慢?

转载 作者:行者123 更新时间:2023-11-29 11:13:37 26 4
gpt4 key购买 nike

我有一个大约有一亿行的表,“id”列是主键,它是表中唯一的键。

我执行如下查询:

SELECT id,name FROM table WHERE id IN (id1, id2, id3, id4, ..., id1000);

“IN”中的这1000个id实际上是由程序预先计算好的常量整数。

但是Mysql每次查询大约花费一分钟左右。它并不慢,但慢得令人难以置信。该条款有什么问题吗?非常感谢!

表定义:

CREATE TABLE mytable
(
id mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
catid smallint(5) unsigned NOT NULL DEFAULT '0',
name char(39) NOT NULL,
originalname varchar(255) NOT NULL,
thumb varchar(255) NOT NULL DEFAULT '',
description varchar(255) NOT NULL DEFAULT '',
status tinyint(2) unsigned NOT NULL DEFAULT '1',
creationtime int(11) unsigned NOT NULL DEFAULT '0',
updatetime int(11) unsigned NOT NULL DEFAULT '0',
score int(11) unsigned NOT NULL
PRIMARY KEY (id)
)
ENGINE=MyISAM
AUTO_INCREMENT=13074618
DEFAULT CHARSET=utf8

最佳答案

IN'list'达到一定大小后,MySQL将交换到TABLE/INDEX SCAN ,这有可能会非常慢。

您可以重写查询以使用 TEMPORARY TABLE 或 JOIN (SELECT UNION),看看这是否有助于提高性能。

考虑运行EXPLAIN EXTENDED看看是什么减慢了速度。

关于mysql - 为什么 "where id in (n1, n2, n3, ..., n2000)"速度非常慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40121332/

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