Большой запрос WHERE - PullRequest
       22

Большой запрос WHERE

0 голосов
/ 28 июня 2011

Каков наилучший способ запроса базы данных с большим набором до 500 сравнений на строку.

SELECT * FROM table WHERE column = x OR column = y OR column = z OR ...(x500)

По моим оценкам, таблица может вырасти до тысяч записей в краткосрочной перспективе. Спасибо

Ответы [ 5 ]

7 голосов
/ 28 июня 2011

Использование WHERE column IN(x,y,z...)

4 голосов
/ 28 июня 2011

Если вы делаете несколько ... скажем, меньше 20 или около того, вы можете использовать предложение IN (....).Однако, если вы делаете что-то, что обычно охватывает 100 или 1000 на регулярной основе, я бы использовал временную таблицу, состоящую только из значений «columnX», и вставил бы в нее все возможные значения ... затем запросил бы соединение, используя эту временную таблицукак основа для другого ...

select YT.*
   from
      JustValuesTable JVT
         Join YourTable YT
            ON JVT.ColumnX = YT.ColumnX
   rest of query...
3 голосов
/ 28 июня 2011

возможно, вы можете использовать предложение in ..

select * from table where column in ('asdf', 'aqwer' .....)

дополнительно, вы можете создать представление, содержащее допустимые значения, а затем

select * from table where column in (select your_field_name from your_view)
1 голос
/ 28 июня 2011

Как насчет использования функции IN ?

1 голос
/ 28 июня 2011

Вам лучше использовать запрос IN:

SELECT * FROM table WHERE column IN (x, y, z)

Это сделало бы его немного более читабельным, по крайней мере, и я думаю, должно улучшить производительность.

...