|
|
|
Построение индекса для звпросов с использованием оператора OR
|
|||
|---|---|---|---|
|
#18+
День добрый! Поделитесь секретами построения оптимальных индексов для запросов в которых используется оператор OR. Например, есть какае-то упрощённая таблица с кластерным индексом по полю age: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. Если выполнять простой запрос вида: Код: sql 1. то тут всё просто: СУБД просто найдёт страницу индекса (Index Seek) где age = 25 и вернёт оттуда значения. Но если есть запрос: Код: sql 1. То задача усложняется — какой путь выберет СУБД — я не знаю. СУБД, возможно, разделит указанный выше запрос на два: Код: sql 1. 2. и выполнит их по отдельности в 2-х различных системных потоках (Threads) и это компенсирует необходимость выполнять 2 запроса последовательно. Но, скорее всего, СУБД выполнит Index Scan — т.е., сканирование всей таблицы целиком, что не есть хорошо... В общем, что посоветуете? — что делать с этими операторами OR? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:33 |
|
||
|
Построение индекса для звпросов с использованием оператора OR
|
|||
|---|---|---|---|
|
#18+
roman_lenkoВ общем, что посоветуете? Лично я посоветую идти в раздел своей СУБД, поскольку индексы и способы выполнения запросов сильно индивидуальная вещь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:41 |
|
||
|
Построение индекса для звпросов с использованием оператора OR
|
|||
|---|---|---|---|
|
#18+
roman_lenkoНо, скорее всего, СУБД выполнитЧто гадать? Возьмите конкретную СУБД и попробуйте. В любом случае, конкретные ответы могут быть применимы только к конкретным СУБД. Кстати, я бы посоветовал вместо OR использовать IN. Код: sql 1. Мне кажется, что так в абстрактно-потолочной СУБД шансы на использование индекса будут выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:42 |
|
||
|
Построение индекса для звпросов с использованием оператора OR
|
|||
|---|---|---|---|
|
#18+
miksoftКстати, я бы посоветовал вместо OR использовать IN. Код: sql 1. Мне кажется, что так в абстрактно-потолочной СУБД шансы на использование индекса будут выше. Ну если уж так говорить, то тогда вообще лучше использовать 2 запроса с union - тут у абстрактно-потолочной СУБД шансов потерять индекс вообще не останется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2014, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=32&tid=1540890]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
72ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 409ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...