Подскажите, что эффективнее: IN(1000 разных ИД) или временная таблица?

Lockpickup
Дата: 29.12.2015 12:20:23
Из Excel оранизован коннекшн к базе mdb, лежащей в сети.
В эксель пользователи выгружиют (из головы, астрала, из сканера штрих-кода и еще неизвестно откуда...) список ID. По совпавшим ИД из базы Access в Excel подтягиваются данные.

Итак вопрос: что наваш взгляд лучше, выполнить запрос к базе в виде
SELECT список_полей, FROM таблицы_в базе_Access WHERE ID IN (ID1, ID2...ID1000)

или для каждого пользователя создавать табицу со списком ИД, и потом ее дропать и делать пак БД, ожидая когда же она сломается. SQL-сервера нет и не предвидится.

Пытался сделать временную БД на на стороне пользователя, но из-за непонятного поведения запроса не прокатило.
Akina
Дата: 29.12.2015 12:39:32
C учётом того, что один хрен все данные тащатся на клиента для обработки, временная таблица не имеет смысла от слова "вааще".
Lockpickup
Дата: 29.12.2015 12:44:56
Ну, я несколько упростил, пока формулировал описание происходящего. Прежде чем БД отдает резултаты пользователю в ексель, на ее стороне производится куча обсчета, промежуточные и конечные результаты сохраняются в базе, конечные возвращаются в эксель.

Akina, а правильно я понимаю, что внутри
IN (ID1, ID2...ID1000)
ограничение на перечисление - 1000?
Akina
Дата: 29.12.2015 12:53:30
Lockpickup
на ее стороне производится куча обсчета

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

Lockpickup
правильно я понимаю, что внутри
IN (ID1, ID2...ID1000)
ограничение на перечисление - 1000?

Тыкни пальцем в ссылку - откуда ты взял число 1000, чтобы правильно понимать?
Lockpickup
Дата: 29.12.2015 13:05:35
По аналогии с ораклом.
Анатолий ( Киев )
Дата: 30.12.2015 12:29:38
Объясните подробнее - в Excel подключена таблица Акса, из которой по введенным юзером ИД подтягиваются данные. Вопрос - куда юзер вводит данные? В другой диапазон, на другой лист, в другой файл или прямо в ячейки этой таблицы?
Lockpickup
Дата: 30.12.2015 16:26:25
Анатолий ( Киев ), вот общая конва:
В ячейках Excel указаны ID -они там уже есть по определению. Пользователь жмет кнопку, в базу Acess (mdb) идет запрос по списку ID, указанных на листе, из базы Acess (mdb) нужно подтянуть данные этим ID.

По итерациям так:
Скрипт (он в файле Excel) подключается к базе Acess посредством ADODB.Connection
Проверяем есть ли конкретный ИД в базе. Если нет, взять ИД в базу, взять дополнительные данные, привязанные к ИД из Excel, провести обсчет данных в базе и вернуть результат в Excel.

Сейчас все запросы из скрипта Excel к базе работают. Вопрос в том, как правильнее (экономнее, разумнее) передать список ИД в базу, для дальнейшего их обсчета.