Есть ли более быстрый способ включить 300+ идентификационных номеров в предложение where в Oracle SQL вместо записи их по одному? - PullRequest
0 голосов
/ 12 апреля 2020

Я должен получить информацию для определенных номеров идентификаторов, которые являются более чем 300 числами, поэтому мне нужно поместить их все в условие where как условие одно за другим, которые занимают время. Есть ли способ или лучшее решение для этого? используя Oracle SQL

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

Так или иначе, вам нужно будет перечислить эти id s (база данных не может просто угадать их).

Один удобный подход - создать таблицу для хранения списка id s. где каждый id появляется в отдельной строке. Вы можете сделать это программно с помощью инструмента по вашему выбору.

Имея такую ​​настройку, скажем, таблицу numbers, вы можете использовать ее в своем запросе с подзапросом join или exists , как:

select t.*
from mytable t
inner join numbers n on n.id = t.id

Или:

select t.*
from mytable t
where exists (select 1 from numbers n where n.id = t.id)
1 голос
/ 12 апреля 2020

Судя по всему, ответ на ваш вопрос IN:

select t.*
from t
where t.id in ( . . . );

Oracle достаточно умен, чтобы использовать индекс в этом случае. Обратите внимание, что Oracle ограничивает количество значений в явном списке in до 1000.

...