правильный порядок соединения таблиц

Alexus12
Дата: 03.12.2009 17:22:31
допустим есть запрос, где идет INNER-соединение больших таблиц (миллионы записей):
Счета + Остатки + Проводки
и маленькой таблицы "Выборка", в которой указаны, например, конкретные счета.

оптимизатор ставит эту маленькую таблицу в самый конец плана,
т.е. сначала соединяет три таблицы по миллиону записей,
а потом, при соединении с таблицей "Выборка", отбрасывает 99% от соединенного

статистика собрана.

это нормально? нужно ли исправлять такой план хинтами ORDERED и т.п.?

существует ли рекомендованный порядок, best practice? где почитать?
bigsov
Дата: 03.12.2009 18:04:26
я думаю лучшая практика - это предоставление оптимизатору актуальной статистики(с гистограммами), создание индексов в нужных местах и отказ от использования хинтов
andrey_anonymous
Дата: 03.12.2009 18:35:09
Попробуйте /*+ leading(small_tab_alias) */
Lecter
Дата: 03.12.2009 18:40:57
Alexus12,

План можна глянуть?
shapm
Дата: 04.12.2009 14:37:33
Есть хорошая книга Дэн Тоу Настройка SQL для профессионалов Питер 2004г.
Основная идея - максимально отсеять ненужные записи на начальном этапе соединения таблиц.
alex-ls
Дата: 04.12.2009 16:30:33
Alexus12

это нормально? нужно ли исправлять такой план хинтами ORDERED и т.п.?

хотя бы сравнили, что предлагает оптимизатор и свой вариант. А то совсем непонятно в чем смысл вопроса :)