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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Ahrefs [Bot]


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

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