powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разница между "OR" и "IN ( , ) "
9 сообщений из 9, страница 1 из 1
Разница между "OR" и "IN ( , ) "
    #39290242
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли принципиальная разница в sql-конструкциях между (a=1 or a=2 or a=3) и a in (1,2,3)?
Второй вариант значительно короче, а повлияет ли это на скорость выполнения запроса?
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290247
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonВторой вариант значительно короче, а повлияет ли это на скорость выполнения запроса?Ты просто посмотри, как он выглядит в предикатах плана. - И вопрос отпадёт.
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290249
Фотография djeday84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

explain plan for with tt as ( select level id from dual connect by level <=100) select * from tt where id in (1,2,3);

Explained.

Elapsed: 00:00:00.01
@utlxpls

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2403765415

--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 13 | 2 (0)| 00:00:01 |
|* 1 | VIEW | | 1 | 13 | 2 (0)| 00:00:01 |
|* 2 | CONNECT BY WITHOUT FILTERING| | | | | |
| 3 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter("ID"=1 OR "ID"=2 OR "ID"=3)
2 - filter(LEVEL<=100)
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290250
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

Посмотри план с предикатами.
Не забудь еще вариант = any (1,2,3)
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290259
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно, не имеет вообще никакого значения для интерпретатора как написано, все сводится к OR.
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290347
Фотография PPA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossisson,

Обе конструкции нужны т.к. это может повлиять на выполнимость запроса вообще :)
в in() нельзя засунуть больше 1000 значений ORA-01795: maximum number of expressions in a list is 1000 error
(в 7-ке был лимит еще меньше - 254)
Но если это не критично для сервера и запросы редкие с помощь or можно обойти
это ограничение без дополнительных таблиц:
where a in(1,...1000) or a in(1000,...2000) ...
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290352
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом случае и без OR можно обойтись ( (a, 0) in ((10, 0), (234, 0),...) )
Не говоря уж о том, что пихать даже 100 условий это такое тонкое издевательство как над оптимизатором, так и над сопровождающими
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290425
sossisson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав ЛюбомудровВ этом случае и без OR можно обойтись ( (a, 0) in ((10, 0), (234, 0),...) )

О! не знал про такую конструкцию. А что это такое? Где про это можно прочитать? У Кайта было в книге?


Вячеслав Любомудровпихать даже 100 условий это такое тонкое издевательство как над оптимизатором, так и над сопровождающими
Согласен, но иначе не получается.
...
Рейтинг: 0 / 0
Разница между "OR" и "IN ( , ) "
    #39290431
Фотография AlexFF__|
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sossissonВячеслав Любомудровпихать даже 100 условий это такое тонкое издевательство как над оптимизатором, так и над сопровождающими
Согласен, но иначе не получается.
Сделай систему предельно трудной для сопровождения - будешь незаменим!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разница между "OR" и "IN ( , ) "
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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