IN vs = в пунктах Where - PullRequest
       1

IN vs = в пунктах Where

1 голос
/ 04 августа 2010

Я пытаюсь создать стандартизированные сценарии SQL для использования в моих отчетах SSRS. Если я хочу иметь такое заявление, как:

Select * from mytable

и используйте переменную SQL (параметр SSRS) в предложении where, есть ли какое-либо преимущество в скорости при использовании этого:

Где поле = @ MyField

VS.

Где поле IN (@MyField)

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

Есть ли какие-либо потери производительности, если я напишу все свои запросы с помощью оператора IN для единообразия?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Производительность отсутствует.Оптимизатор преобразует IN в серию операций = ИЛИ вместе.

В качестве примечания, я надеюсь, что вы на самом деле не используете SELECT * в ваших реальных запросах.

0 голосов
/ 05 августа 2010

производительность замедляется, если в предложении IN есть большое количество элементов

0 голосов
/ 04 августа 2010

Для одного аргумента оптимизатор изменит это IN на =, в операторе реального выполнения.

Поскольку оба эти аргумента Sargeble (Джо Стефанелли спасибо за внимание); разница в производительности может быть найдена, когда у вас есть значение последовательности в предложении in, например, IN (1,2,3,4,5,6) медленнее, чем between 1 and 6, потому что для IN индекс должен быть прочитан для каждого значения в этом случае 6 раз между только один раз ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...