Текущее время: Пн, авг 04 2025, 09:13

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 06 2008, 18:47 
Старший специалист
Старший специалист

Зарегистрирован:
Сб, окт 21 2006, 20:34
Сообщения: 280
ну планы то одинаковые только на первый взгляд - когда во втором случае ищет по KONH - то используется не 2 столбца как в первом случае - а один и число обработанных записей сразу выросло и затраты SPU очень во много раз


TABLE ACCESS BY INDEX ROWID KONH
| ( Estim. Costs = 898 , Estim. #Rows = 38.091 )
| Estim. CPU-Costs = 39.109.602 Estim. IO-Costs = 893
| Filter Predicates
|
|-- 3 INDEX RANGE SCAN KONH~0
( Estim. Costs = 295 , Estim. #Rows = 152.363 )
Search Columns: 1
Estim. CPU-Costs = 24.777.102 Estim. IO-Costs = 292
Access Predicates Filter Predicates


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 06 2008, 19:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
dump написал(а):
ну планы то одинаковые только на первый взгляд - когда во втором случае ищет по KONH - то используется не 2 столбца как в первом случае - а один и число обработанных записей сразу выросло и затраты SPU очень во много раз

Да, действительно, прошляпил.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, май 06 2008, 22:54 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
sibrin, тут вот какая штука:
По неведомой мне причине во втором плане потерялся мандант.
Т.е. поиск по KONH идет без учета манданта.
Далее скорость падает из-за использования HASH JOIN (из-за кол-ва записей KONH имеем классический случай - соединение маленькой и большой таблицы, тут оптимизатор абсолютно прав).

По поводу планов:
Что-то я не верю, что explain может возвращать некорректный план. Думаю здесь дело не в оракле. Сам такого не наблюдал.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 07 2008, 08:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Пономарев Артем написал:
Что-то я не верю, что explain может возвращать некорректный план.

В данном случае-то понятно, что Oracle не виноват, а виноват я, не заметив HASH JOIN :oops: А когда в упор что-то не видишь, можно и не такое предположить :)

А то, что в каких-то версиях Oracle были баги, почему бы и не поверить ROKO.

PS. Спасибо всем.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 07 2008, 08:31 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
sibrin написал:
В данном случае-то понятно, что Oracle не виноват, а виноват я, не заметив HASH JOIN :oops: А когда в упор что-то не видишь, можно и не такое предположить :)

тогда возникает вопрос - почему в практически одинаковых запросах в одном случае NESTED LOOPS, а в другом HASH JOIN?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 07 2008, 11:19 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
ArmAnn написал:
тогда возникает вопрос - почему в практически одинаковых запросах в одном случае NESTED LOOPS, а в другом HASH JOIN?

Так я написал:
1. во втором случае поиск в KONH идет без учета манданта (видимо, т.к. идет индекс скан по одному полю, вместо двух полей праймари ключа).
2. в результате имеем кучу записей из KONH, которую джойним с относительно небольшим кол-вом записей из cdhdr (вот здесь и идет отличие между планами). Т.е. имеем классический случай HASH JOIN'а.

Цитата:
А то, что в каких-то версиях Oracle были баги, почему бы и не поверить ROKO.

Вообще да. В ранних версиях цифра.0.цифра и не такое бывает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 07 2008, 11:35 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Пономарев Артем написал:
Так я написал:
1. во втором случае поиск в KONH идет без учета манданта (видимо, т.к. идет индекс скан по одному полю, вместо двух полей праймари ключа).
2. в результате имеем кучу записей из KONH, которую джойним с относительно небольшим кол-вом записей из cdhdr (вот здесь и идет отличие между планами). Т.е. имеем классический случай HASH JOIN'а.

Ок, поставим вопрос по другому - почему во втором случае поиск идет без учета манданта? Запросы то практически одинаковые. Срыв башки оптимизатора?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 07 2008, 15:24 
Менеджер
Менеджер

Зарегистрирован:
Чт, янв 20 2005, 08:34
Сообщения: 573
Пол: Мужской
Пономарев Артем написал:
...
1. во втором случае поиск в KONH идет без учета манданта (видимо, т.к. идет индекс скан по одному полю, вместо двух полей праймари ключа).
...


Если б без манданта, то индекс бы вообще не взялся.
Поля то должны присутствовать в порядке их следования.

_________________
Волю в кулак, мышцы в узду, работай себе и не ахай!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, май 12 2008, 22:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
2 sibrin
sibrin написал:
AND cdhdr~udate >= '20070401'.
...
Откуда: ECC 6.0
а на вашей версии оракла еще есть разница между
cdhdr~udate >= '20070401'.
и
cdhdr~udate between '20070401' and '99991231' ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB