Между оператором против> = и <=: есть ли разница в производительности?

StackOverflow https://stackoverflow.com/questions/2692593

  •  01-10-2019
  •  | 
  •  

Вопрос

Эти два утверждения логически эквивалентны:

SELECT * FROM table WHERE someColumn BETWEEN 1 AND 100

SELECT * FROM table WHERE someColumn >= 1 AND someColumn <= 100

Есть ли потенциальная производительность на один по сравнению с другим?

Это было полезно?

Решение

Нет выгоды, просто синтаксис сахара.

Используя BETWEEN Версия, вы можете избежать переоценки функций в некоторых случаях.

Другие советы

Там нет никакой выгоды, проще прочитать / писать первый.

Нет, никаких производительности Benifit. Это просто маленькая конфета.

Если вы должны были проверить сравнение запросов, что-то вроде

DECLARE @Table TABLE(
        ID INT
)

SELECT  *
FROM    @Table
WHERE   ID >= 1 AND ID <= 100

SELECT  *
FROM    @Table 
WHERE   ID BETWEEN 1 AND 100

и проверьте план выполнения, Вы должны заметить, что это точно так же.

Хм, вот был удивительным результатом. У меня нет SQL Server здесь, поэтому я попробовал это в Postgres. Очевидно, что отказ от ответственности применяются: это не обязательно даст те же результаты, ваш пробег может варьироваться, обратиться к врачу перед использованием. Но все равно ...

Я только что написал простой запрос двумя разными способами:

select *
from foo
where (select code from bar where bar.barid=foo.barid) between 'A' and 'B'

а также

select *
from foo
where (select code from bar where bar.barid=foo.barid)>='A'
and (select code from bar where bar.barid=foo.barid)<='B'

Удивительно мне, оба имели почти одинаковые времена прохода. Когда я сделал план объяснения, они дали идентичные результаты. В частности, первый запрос дважды сделал поиск против бара, один раз, когда-то для теста> = и снова для теста <=, как и второй запрос.

Заключение: в Postgres, по крайней мере, между собой действительно просто синтаксический сахар.

Лично я использую его регулярно, потому что читателю более понятнее, особенно если тестируемое значение является выражением. Выяснение, что два сложных выражения идентичны, могут быть нетривиальными упражнениями. Выяснение, что два сложных выражения должны быть идентичными, даже если они не являются еще сложнее.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top