|
Странные решения оптимизатора
|
|||
---|---|---|---|
#18+
ASE 15.0.3 Есть таблица с двумя индексами: Код: sql 1. 2. 3. 4. 5. 6.
В char_field может быть около десяти разных значений, это поле является ссылкой на lookup таблицу. Как внешний ключ она явно не объявлена, связь делается на уровне приложения. Делаю запросы: Код: sql 1. 2. 3. 4. 5. 6. 7.
Оба запроса должны вернуть (и возвращают) около десяти строк. Все хорошо, но работает второй запрос намного медленней чем первый. Стал смотреть план и увидел странное. Не смотря на то что селективность по дате намнооого выше чем по флаговому полю, как только в запросе появляется связь по флаговому полю оптимизатор начинает использовать индекс idx_c вместо idx_d. Спрашивается, почему и как с этим бороться? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2012, 20:35 |
|
Странные решения оптимизатора
|
|||
---|---|---|---|
#18+
White Owl, Покажите планы. Подозреваю,что во втором запросе merge_join происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2012, 21:45 |
|
|
start [/forum/moderation_log.php?user_name=ustik]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
get settings: |
11ms |
get forum list: |
14ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 1200ms |
total: | 1489ms |
0 / 0 |