Хм, тут был удивительный результат. У меня нет 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'
Удивительно для меня, у обоих были почти идентичные времена выполнения. Когда я сделал EXPLAIN PLAN, они дали идентичные результаты. В частности, первый запрос выполнил поиск по строке дважды, один раз для теста> = и еще раз для теста
Вывод: По крайней мере, в Postgres BETWEEN - это просто синтаксический сахар.
Лично я регулярно использую его, потому что он понятнее читателю, особенно если проверяемое значение является выражением. Выяснить, что два сложных выражения идентичны, может быть нетривиальным упражнением. Выяснить, что два сложных выражения ДОЛЖНЫ БЫТЬ ОДНОВРЕМЕННЫ, даже если они не являются, еще сложнее.