|
Странные решения оптимизатора
|
|||
---|---|---|---|
#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/topic.php?fid=55&msg=37742693&tid=2010155]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
160ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 278ms |
0 / 0 |