SELECT value FROM table WHERE id IN ("1","2","3", ... "500000")
查询内容如上所述,括号中约有500,000个值。
有更好的方法来执行搜索吗?这种方法非常麻烦/慢。
答案 0 :(得分:9)
将500,000个值放入另一个表中并加入其中。
SELECT t.value
FROM table t
INNER JOIN NewTempTable n
ON t.id = n.id
答案 1 :(得分:2)
你接近mysql数据包大小限制(它是16MB)所以这当然是个坏主意。
从哪个来源获得这些50万个ID?你不能将它们存储在数据库中并执行连接吗?
答案 2 :(得分:2)
您可以执行以下操作:
步骤01:制作ID表
DROP TABLE IF EXISTS lookup_ids;
CREATE TABLE lookup_ids SELECT id FROM `table` WHERE 1=2;
ALTER TABLE lookup_ids ADD PRIMARY KEY (id);
步骤02:您将所有500,000个值插入INTO lookup_ids
步骤03:在table
ALTER TABLE `table` ADD UNIQUE INDEX id_value_ndx (id,value);
步骤04:执行JOIN
SELECT t.value FROM `table` t INNER JOIN lookup_ids i USING (id);
或
SELECT t.value FROM `table` t NATURAL JOIN lookup_ids i;
CAVEAT:除非您有一组不同的查找ID要加载,否则不需要重复步骤1-3