Теперь нужно получить данные из БД по этим id-шникам. Можно сделать это так:
SELECT column1,column2
FROM mytable
WHERE id=a OR id=b OR id=с .... OR id=z;
Однако, интуитивно, возникает подозрение, что длина строки ограничена, и при превышении определенного предела, СУБД выкинет ошибку.
В голову пришла другая мысль по реализации, выглядящая не так коряво (хотя, кому как):
Создаем временную табличку (CREATE TABLE TempTable и т.д.)
Загоняем в нее все наши id-шники INSERT-ом.
А затем делаем такой запрос
SELECT column1,column2
FROM mytable,TempTable
WHERE mytable.id=TempTable.id_temp;
Получили требуемые данные.
Затем DROP TABLE TempTable
В этом варианте, я практически гарантированно получаю результаты запроса, нисколько не опасаясь, что буфер переполнится (а переполнится ли он?). Но минус - этот способ намного медленнее. И при достаточно большом списке id-шников, запрос исполнятеся достаточно долго, что не удивительно. В первом же способе выполнятеся почти мгновенно.
Ну и наконец, интересно узнать, какой из способов предпочтительней, и есть ли другие варианты решения? Менять ER-модель не предлагать
Правило №2: не смотреть в телескоп на солнце оставшимся глазом.