Мне нужно получить записи, которые соответствуют идентификаторам, хранящимся в списке. Запрос, сгенерированный во время выполнения, прост:
SELECT [whatever FROM sometable] WHERE (id = 1) or (id = 5) or (id = 33).
Что эквивалентно
SELECT [whatever FROM sometable] WHERE [id] IN (1, 5, 33);
Это нормально, но что, если список содержит сотни или тысячи идентификаторов? Это утверждение будет огромным, и в какой-то момент синтаксический анализатор SQL может выкрутиться, или, если это не так, производительность, вероятно, будет довольно плохой. Как я могу сделать это так, чтобы это не было так чувствительно к количеству извлекаемых записей?
(Причина, по которой я не могу просто циклически перебирать список и извлекать записи по одной, заключается в том, что мне нужна база данных для выполнения ORDER BY. Записи должны поступать из БД, упорядоченной по определенному полю, в то время список представляет записи, выбранные пользователем в сетке, которые могут быть отсортированы любым количеством способов. И да, я мог бы сортировать записи в коде после их извлечения, но это план Б, поскольку мне даже не нужно хранить все они в одной структуре данных, только чтобы быть правильно упорядоченными.)