powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Аналог BETWEEN через <,>,=
11 сообщений из 11, страница 1 из 1
Аналог BETWEEN через <,>,=
    #39839670
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напомните пожалуйста чему идентичен запрос с BETWEEN если его переписать через использование <,>,=

Код: sql
1.
2.
3.
SELECT *
FROM Universities
WHERE Students BETWEEN 10000 AND 30000



будет
1.
Код: sql
1.
2.
3.
SELECT *
FROM Universities
WHERE Students > 10000 AND Students < 30000



или
2.
Код: sql
1.
2.
3.
SELECT *
FROM Universities
WHERE Students >= 10000 AND Students <= 30000



???

источник http://2sql.ru/novosti/sql-between/
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39839672
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39839689
Mr. X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39883978
Ольга Семенова
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что быстрее выполнится оптимизатором запросов ?
between или сочетание ">= и <= "
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39883992
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не разные операторы, а разные формы одного и того же оператора. Вопрос "что быстрее" не имеет смысла.
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39884001
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте для пользы дела ответим на другой вопрос:

Допустим есть запрос в котором повторяются выражения

Код: sql
1.
2.
3.
4.
5.
SELECT 
<Сложное выражение 1>, 
<Сложное выражение 2>
FROM XX
WHERE <Сложное выражение 1> >= <Сложное выражение 2> AND <Сложное выражение 1> >= 1 AND <Сложное выражение 2> <= 99999



Сделает ли оптимизатор запроса так, что эти выражение будут вычисляться один раз? И при каких условиях.

И ответ не совсем очевиден. Например, в выражении могут присутствовать deterministic и nondeterministic функции.
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39884102
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninСделает ли оптимизатор запроса так, что эти выражение будут вычисляться один раз? И при каких условиях.
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare @t table (id int primary key, a float);

set statistics profile on;
select id, a from @t where power(a, 3) between 5 and 10 or power(a, 3) between 15 and 20;
select t.id, t.a from @t t cross apply (select power(t.a, 3)) x(a3) where x.a3 between 5 and 10 or x.a3 between 15 and 20;
with t as (select top (cast(0x7fffffffffffffff as bigint)) id, a, power(a, 3) as a3 from @t order by id) select id, a from t where a3 between 5 and 10 or a3 between 15 and 20;
set statistics profile off;
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39884187
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm,

У вас какие-то навороченные примеры.

Если взять попроще, то вычисляет по три раза

Код: sql
1.
2.
3.
4.
set statistics profile on;
SELECT y, SIN(y) FROM (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(0)) x(y)
WHERE SIN(y) > 0.1 AND SIN(y) < 0.9 
set statistics profile off;




SELECT y, SIN(y) FROM (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(0)) x(y) WHERE SIN(y) > 0.1 AND SIN(y) < 0.9
|--Compute Scalar(DEFINE:([Expr1011]=sin(CONVERT_IMPLICIT(float(53),[Union1010],0))))
|--Filter(WHERE:(sin(CONVERT_IMPLICIT(float(53),[Union1010],0))>(1.0000000000000001e-001) AND sin(CONVERT_IMPLICIT(float(53),[Union1010],0))<(9.0000000000000002e-001)))
|--Constant Scan(VALUES1)),((2)),((3)),((4)),((5)),((6)),((7)),((8)),((9)),((0))))
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39884223
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninУ вас какие-то навороченные примеры.Мои примеры показывают, когда выражение вычисляется один раз, а когда нет.
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39884905
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ольга Семеноваа что быстрее выполнится оптимизатором запросов ?
between или сочетание ">= и <= "Думаю, что для оптимизатора это абсолютно одинаково. Чисто выбор удобства SQL конструкции для разработчика.
...
Рейтинг: 0 / 0
Аналог BETWEEN через <,>,=
    #39885144
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo,

если посмотреть на план, то нет -- не одинаково
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Аналог BETWEEN через <,>,=
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]