考虑到我的需求,我有一个简单的查询,它太慢了。查询是:
SELECT a FROM tableA WHERE b IN ("SOME_IDS_LIST") ORDER BY a
tableA 大约有 300 000 行并包含索引 (a,b)。 “SOME_IDS_LIST”列表越长,查询速度越慢。有什么办法可以加快这种查询的速度吗?我一直在互联网上寻找一些通用的解决方案,但没有成功。
最佳答案
在 yout 表上放置 b 字段的索引。
如果结果太慢。
不要使用 IN 子句,而是使用您的 ID 创建一个临时表,并使用 INNER JOIN 语句将您的临时表与 tableA 链接起来。
你的脚本:
CREATE TEMPORARY TABLE myTempTable (id int)
INSERT INTO myTempTable (all your ID)
SELECT *
FROM tableA
JOIN myTempTable
ON tableA.b = myTempTable.id
关于临时表的创建see here
关于mysql - 如何编写有效的 "SELECT a FROM t WHERE b IN() ORDER BY a"查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18019667/