我在 mysql 中看到In 运算符替代
我几乎有ids。我25,000
正在使用in
操作符。然后我得到了。mysqlStackoverflow Exception
中的 IN 操作符还有其他选择吗?
提前致谢..
我在 mysql 中看到In 运算符替代
我几乎有ids。我25,000
正在使用in
操作符。然后我得到了。mysqlStackoverflow Exception
中的 IN 操作符还有其他选择吗?
提前致谢..
如果 ID 在另一个表中:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
那么你可以使用 join 代替:
SELECT table1.* FROM table1 INNER JOIN table2 ON table1.id = table2.id;
您可以执行以下操作:
1 - 创建一个MySQL 临时表
CREATE TEMPORARY TABLE tempIdTable (id int unsigned not null primary key);
2 - 将您的所有 id 插入临时表
对于列表中的每个 id:
insert ignore into myId (id) values (anId);
(这将有额外的好处,即为最后一步准备去重复您的 id 列表)
3 - 加入临时表
SELECT t1.* FROM myTable1 t1 INNER JOIN tempIdTable tt ON t1.id = tt.id;
一旦您的连接断开,临时表就会消失,因此您不必担心在下次创建它之前将其删除。