@EvilBeaver
упоротый гик

Какой план запроса лучше?

Есть запрос, выбирающий примерно 100к строк.
У него был вот такой план выполнения
habrastorage.org/files/ac3/889/550/ac38895507ef4d0...
В нем видно 2 table scan, это условие вида:
LEFT JOIN table ON table.somefield = @param
Я добавил индекс по этому полю somefield, и план стал таким:
habrastorage.org/files/0a1/2be/863/0a12be86308c45d...
Время выполнения толком не изменилось. Можно ли сказать, какой из этих планов заведомо хуже?
  • Вопрос задан
  • 2583 просмотра
Пригласить эксперта
Ответы на вопрос 3
za90
@za90
быдлокодер со стажем
Без знания деталей сложно сказать, тем не менее... Нет, мне ни один из них не нравится!
Попробуйте жесткими хинтами отключить мозги серверу. Бывает option (loop join, force order) помогает лучше, чем создание индексов. Ну и в join-е пнуть table with(index(TMPIND_0)) или как его там.
Ответ написан
Комментировать
Fadmin
@Fadmin
Вы бы хоть запрос показали, а лучше с данными.
table scan и hash match говорят о том можно еще что то сделать,
вопрос в том надо ли?
Сильно медленно работает?
Индекс кластерный? Покрывающий ваш join?
Ответ написан
@edb
SQL
используйте set statistics io, time on для понимания что реально тормозит
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы