替代的操作在MySQL
问题描述:
我看到In operator alternative in mysql替代的操作在MySQL
,我差不多25,000
ids.I正在使用in
操作上that.Then我得到Stackoverflow Exception
。就是有在MySQL IN操作符任何其他选择。
在此先感谢..
答
如果ID是在另一个表:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);
那么你可以使用代替连接:
SELECT table1.* FROM table1 INNER JOIN table2 ON table1.id = table2.id;
答
你可以做到以下几点:
1 - 创建一个MySQL Temporary Table
CREATE TEMPORARY TABLE tempIdTable (id int unsigned not null primary key);
2 - 将你所有的IDS到临时表
对于每一个ID在你的名单:
insert ignore into myId (id) values (anId);
(这将有额外的奖励去复制您已准备好进行最后一步的ID列表)
3 - 加入临时表
SELECT t1.* FROM myTable1 t1 INNER JOIN tempIdTable tt ON t1.id = tt.id;
为您的连接被删除,以便您不必在创建它下一次之前担心放弃它的临时表将消失。
你可以使用'exist' ..它比'In'快。存在将停止搜索时,它已经找到1匹配http://stackoverflow.com/questions/3999600/mysql-difference-between-in-and-exist – Meherzad
你可以动态生成查询,并用循环中的OR语句替换IN。但结果将是相同的(或更糟糕的)我猜...也许切片查询几个最小的查询是选项(5查询5000元素)? – Phantom