Запрос выбора основной массы идентификаторов из таблицы - SQL - PullRequest
1 голос
/ 31 июля 2010

У меня есть таблица, которая содержит ~ 1M строк.У моего приложения есть список из ~ 100K идентификаторов, которые принадлежат этой таблице (список, сгенерированный прикладным уровнем).

Существует ли общий способ запроса всех этих идентификаторов?~ 100K Выберите запросы?Временную таблицу, в которую я вставляю ~ 100K идентификаторов, и выбираю запрос через присоединение к необходимой таблице?

Спасибо, Doori Bar

Ответы [ 3 ]

0 голосов
/ 31 июля 2010

Вы можете сделать это в одном запросе, что-то вроде

SELECT * FROM large_table WHERE id IN (...)

Вставьте разделенный запятыми список идентификаторов, куда я помещаю ... К сожалению, я не знаю простого способа параметризации этого, поэтому нужно быть очень-очень осторожным, чтобы избежать уязвимостей SQL-инъекций.

0 голосов
/ 31 июля 2010

Временная таблица, содержащая идентификаторы 100 тыс., Кажется хорошим решением. Не вставляйте их один за другим, хотя; Синтаксис INSERT ... VALUES в MySQL допускает вставку нескольких строк.

Кстати, где вы берете свои 100k идентификаторов, если они не из базы данных? Если они приходят из предыдущего запроса, я бы предложил заполнить временную таблицу.

Редактировать: для более переносимого способа множественной вставки:

INSERT INTO mytable (col1, col2) SELECT 'foo', 0 UNION SELECT 'bar', 1 
0 голосов
/ 31 июля 2010

Действительно ли эти идентификаторы ссылаются на таблицу с 1М строк?

Если это так, вы можете использовать SELECT * ids FROM <1M table>

где ids - это столбец идентификатора, а где "1M таблица" - это имя таблицы, содержащей строки 1M.

но я не думаю, что я действительно понимаю ваш вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...