Ускорение большого количества запросов SELECT, которые могут или не могут вернуть результат

2

У меня есть этот запрос:

"SELECT SECURITY_ID FROM" + ценных бумагTable + "WHERE (ISIN =? Или CUSIP =? Или SEDOL =?)"

Мне нужно выполнить его примерно в 50 тыс. Раз. Строки могут иметь 1, 2 или все 3 из значений в предложении where, а некоторые из запросов не возвращают никаких результатов. Для возвращаемых строк мне нужно знать, с какими ISIN/CUSIP/SEDOL они совпадают, и мне нужно знать, какие из них не имеют результатов, поэтому я могу вставить их в таблицу позже.

Сейчас очень медленно, я предполагаю, что время в оба конца составляет 50 тыс. Запросов по отдельности. Есть ли способ, которым я могу сделать это в пакете, сохраняя при этом отслеживание результатов запроса, и какие запросы имеют нулевой результат?

Теги:
spring
jdbc

1 ответ

3
Лучший ответ

Вместо того, чтобы делать 50k-выбор, создайте временную таблицу, загрузите в нее свои ISIN, CUSIP и SEDOL, а затем join к этой таблице. Затем приведите результаты за один раз. Это приводит к трех сетевым передачам вместо 50k.

В качестве альтернативы, реструктурируйте свое утверждение в ... where ISIN in ('DE...','DE...',...), но большинство запросов не может превышать длину 32 килобайта в качестве строки запроса. Такой подход потребует некоторого дозирования.

Кроме того, в идеале, список ваших ценных бумаг уже находится в базе данных, поэтому вы можете либо выбрать их во временную таблицу, либо напрямую присоединиться к ценной бумаге к остальной информации.

  • 0
    Вау, это прекрасно. Хотел бы я подумать об этом. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню