Я вижу In operator alternative in mysqlАльтернатива в оператора в MySQL
Я почти 25,000
ids.I я использую in
оператора на that.Then я получаю Stackoverflow Exception
.а там любая другая альтернатива для оператора IN в MySQL.
Заранее спасибо ..
Я вижу In operator alternative in mysqlАльтернатива в оператора в MySQL
Я почти 25,000
ids.I я использую in
оператора на that.Then я получаю Stackoverflow Exception
.а там любая другая альтернатива для оператора IN в MySQL.
Заранее спасибо ..
Если идентификаторы находятся в другой таблице:
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 - Вставьте все ваши идентификаторы во временную таблицу
Для каждого идентификатора в списке:
insert ignore into myId (id) values (anId);
(это будет иметь дополнительный бонус де-множительной ваш список идентификаторов, готовых к заключительному этапу)
3 - Присоединиться к временному столу
SELECT t1.* FROM myTable1 t1 INNER JOIN tempIdTable tt ON t1.id = tt.id;
Временная таблица исчезнет, как только ваше соединение обрывается так ваш не придется беспокоиться об удалении его, прежде чем создать его в следующий раз.
Вы можете использовать 'exist' .. Это быстрее, чем' In'. Exist остановит поиск, когда он найдет 1 совпадение. Http://stackoverflow.com/questions/3999600/mysql-difference-between-in-and-exist – Meherzad
вы можете динамически генерировать запрос и заменять IN операторами OR в цикле. но результат будет таким же (или хуже), я думаю ... возможно, нарезка запроса на несколько маленьких запросов - это вариант (5 запросов с 5000 элементами)? – Phantom