Что быстрее or или in?
От: Аноним  
Дата: 20.10.10 10:14
Оценка:
Всем, привет.
Помогите начинающему, пожалуйста.
Что быстрее отработает в придложении where:

where
    T1.ID in (1,2,3,4)


или

where
    T1.ID = 1 or
    T1.ID = 2 or
    T1.ID = 3 or
    T1.ID = 4


Или нет разницы?

Заранее, спасибо.
Re: Что быстрее or или in?
От: MasterZiv СССР  
Дата: 20.10.10 11:12
Оценка: +1
On 20.10.2010 14:14, Аноним 929 wrote:

Разницы нет.
Posted via RSDN NNTP Server 2.1 beta
Re: Что быстрее or или in?
От: wellwell Австралия https://www.softperfect.com
Дата: 20.10.10 11:36
Оценка:
" Аноним 929 " <0@users.rsdn.ru> wrote in message news:4005287@news.rsdn.ru...
> Или нет разницы?

Обычно оптимизатор превращает первое во второе, так что нет разницы.
Posted via RSDN NNTP Server 2.1 beta
Re: Что быстрее or или in?
От: londinium Украина  
Дата: 20.10.10 18:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Всем, привет.

А>Помогите начинающему, пожалуйста.
А>Что быстрее отработает в придложении where:

А>
А>where
А>    T1.ID in (1,2,3,4)
А>


А>или


А>
А>where
А>    T1.ID = 1 or
А>    T1.ID = 2 or
А>    T1.ID = 3 or
А>    T1.ID = 4
А>


А>Или нет разницы?


А>Заранее, спасибо.


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

 T1.ID between 1 and 4
Re[2]: Что быстрее or или in?
От: MasterZiv СССР  
Дата: 23.10.10 12:54
Оценка:
On 20.10.2010 22:18, londinium wrote:

> Если значения подряд, то проще, наверное

>
> T1.ID between 1 and 4

А вот between сильно быстрее может быть.
Конечно, зависит от размера диапазона, но всё же.

Правда, не факт, что какой-нибудь хитрый оптимизатор не
сможет IN превратить в несколько between по диапазонам
в виде применения OR-стратегии.
Posted via RSDN NNTP Server 2.1 beta
Re: Что быстрее or или in?
От: Аноним  
Дата: 23.10.10 13:17
Оценка:
Если вы подумаете, что ключевое слово IN выполняет ту же функцию, что и OR, то будете совершенно правы. Следующий SQL-запрос выполняет ту же функцию, что и предыдущий:
Зачем же нужно ключевое слово IN? Его преимущества следующие.
— При работе с длинными списками необходимых значений синтаксис логического оператора IN гораздо легче читать.
— При использовании ключевого слова IN гораздо легче управлять порядком обработки (так как используется меньшее количество операторов).
— Логические операторы IN почти всегда быстрее обрабатываются, чем списки логических операторов OR.
— Самое большое преимущество логического оператора IN в том, что в данном операторе может содержаться еще одна инструкция SELECT, а это позволяет создавать очень динамичные предложения WHERE. Более подробно вы об этом узнаете в разделе, "Использование подзапросов".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.