Re[3]: Oracle еше одна проблема. чтоб им.
От: AVAKON  
Дата: 01.05.15 12:58
Оценка:
Здравствуйте, зиг, Вы писали:

зиг>Здравствуйте, AVAKON, Вы писали:


AVA>>Здравствуйте, зиг,


AVA>>А попробуй код, без которого все летает вынести в самый верх, туда где select B.*. Там же ограничение на вывод 30 строк идет, зачем находить максимальное значение (ASOF) целиком для всех строк? Там где сейчас ASOF вычисляется просто оставь p.PKEY, чтобы по нему уже вверху вычислить ASOF.


зиг>ха! верной дорогой идете товарищи! до этого я уже сама додумалась и сделала, и запрос действительно стал летать.

зиг>НО, проблема остается если мы делаем не первые 30 строк, а все допустим, или, если по этому значению asof нам нужно фильтровать либо сортировать. тогда его выносить наружу никак нельзя.

А план, который ты кусочек прислала, он ведь уже выполнен после переброса ASOF вверх? Судя по нему это значение рассчитывается именно для 30 строк, а не для всей выборки. Может есть смысл использовать аналитику типа max over, материализовать обращение к tablee при помощи with, и потом уже с неё максимумы эти тянуть? Если не будем ограничиваться выборкой 30 строк, то имхо это может помочь. У нас же здесь тормоза, как я понимаю из-за определения этих максимумов...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.