У меня есть этот запрос:
"SELECT SECURITY_ID FROM" + ценных бумагTable + "WHERE (ISIN =? Или CUSIP =? Или SEDOL =?)"
Мне нужно выполнить его примерно в 50 тыс. Раз. Строки могут иметь 1, 2 или все 3 из значений в предложении where, а некоторые из запросов не возвращают никаких результатов. Для возвращаемых строк мне нужно знать, с какими ISIN/CUSIP/SEDOL они совпадают, и мне нужно знать, какие из них не имеют результатов, поэтому я могу вставить их в таблицу позже.
Сейчас очень медленно, я предполагаю, что время в оба конца составляет 50 тыс. Запросов по отдельности. Есть ли способ, которым я могу сделать это в пакете, сохраняя при этом отслеживание результатов запроса, и какие запросы имеют нулевой результат?
Вместо того, чтобы делать 50k-выбор, создайте временную таблицу, загрузите в нее свои ISIN, CUSIP и SEDOL, а затем join
к этой таблице. Затем приведите результаты за один раз. Это приводит к трех сетевым передачам вместо 50k.
В качестве альтернативы, реструктурируйте свое утверждение в ... where ISIN in ('DE...','DE...',...)
, но большинство запросов не может превышать длину 32 килобайта в качестве строки запроса. Такой подход потребует некоторого дозирования.
Кроме того, в идеале, список ваших ценных бумаг уже находится в базе данных, поэтому вы можете либо выбрать их во временную таблицу, либо напрямую присоединиться к ценной бумаге к остальной информации.