Господа, не обессудьте
Имеетмся 3 таблицы, примерно одинаковых по размеру.
Выборка 1
select t1.name, sum(t2.data)
from table1 t1 left join table2 t2 on t2.reftotable1_ID=t1.ID
group by t1.name
Выборка 2
select t1.name, sum(t3.data)
from table1 t1 left join table3 t3 on t3.reftotable1_ID=t1.ID
group by t1.name
Так вот Выборка 1 отрабатыцвает почти мгновенно, а вот выборка 2 примерно 5-7 минут.
Подскажите плз., можно ли каким-то образом ускорить процесс?????
З.Ы. Все индексы подняты...
Oracle 9.2 Оптимизация запроса
Планы запросов надеюсь в Oracle есть? Там могут крыться ответы на вопросы.
Даже самый дурацкий замысел можно воплотить мастерски
-
- Сообщения: 492
- Зарегистрирован: 17 фев 2004, 11:26
- Откуда: Ленинград (который Город на Неве)
- Контактная информация:
Есть.AiK писал(а):Планы запросов надеюсь в Oracle есть? Там могут крыться ответы на вопросы.
"Особое внимание начинающих аквариумистов хотим обратить на то, что рыбки никогда не спят на спинке!" (c)
viel spass, DeeJayC
viel spass, DeeJayC
Видимо вопрос уже отсох сам собой. Кстати, скорость может быть разной, потому что в одном случае испульзуется кластерный индекс, а в другом - нет.
Даже самый дурацкий замысел можно воплотить мастерски
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
В Oracle начиная с 8i есть два вида индексов. Обычный (древовидный) и битовый (bitmap index)
Первый хорош для данных с небольшим числом повторений (например для pk идеально) а второй для значений, которые часто повторяются.
Исполльзовать индекс или нет Oracle часто решает сам, например, для небольших таблиц часто он кладет на индексы, если они помещаются в кеше. Тут только план запроса надо смотреть и ковыряться что и как отработало, а в случае если Oracle не прав - вписать в предложение select так называемые хинты, которые скажут ему, какие индексы тут надо поюзать.
Кроме того есть в sp-файле параметры, изменяющие внутренние алгоритмы, связанные с оптимизацией запросов (по разному (из разных критериев) может вычисляться стоимость запроса). На вскидку не помню, могу посмотреть, если надо.
Первый хорош для данных с небольшим числом повторений (например для pk идеально) а второй для значений, которые часто повторяются.
Исполльзовать индекс или нет Oracle часто решает сам, например, для небольших таблиц часто он кладет на индексы, если они помещаются в кеше. Тут только план запроса надо смотреть и ковыряться что и как отработало, а в случае если Oracle не прав - вписать в предложение select так называемые хинты, которые скажут ему, какие индексы тут надо поюзать.
Кроме того есть в sp-файле параметры, изменяющие внутренние алгоритмы, связанные с оптимизацией запросов (по разному (из разных критериев) может вычисляться стоимость запроса). На вскидку не помню, могу посмотреть, если надо.