странности с запросом

Kyamranbey
Дата: 19.12.2012 14:59:38
Всем привет
Уважаемые, помогите советом.

есть один большой запрос, доставшийся по наследству, в котором часть записей появляется если, например, в фильтре по дате документа, дату взять в trunc().
Запрос большой с несколькими union all, на которые сверху и накладывается фильтр по дате.
Последний подзапрос в union all, если отдельно запустить с этим внешним фильтром по дате, выводит нужные записи.
План запроса при помещении поля дата документа в trunc() меняется не значительно. Исчезает шаг FILTER(как раз на той последней секции unian all).

Не хочется тратить ваше время на вникание, выкладывая запрос сюда и его план.

Просто прошу помочь с подсказкой, с чем может быть связано.
Может статистику пересобрать. Интересно, просто, может еще в каких запросах будут подобные отсевы.

Кстати, базу залил с дампа 9i в 11g.
Так же создал dbms_stat -ом стат. таблицу и перетащил ее в 11 там проапгрейдил и применил.


Столкнулся впервые с такой ситуацией, больно не пинайте плиз.
Заранее благодарен.
123йй
Дата: 19.12.2012 15:16:07
Kyamranbey,

автор
в фильтре по дате документа, дату взять в trunc().

где-то лезет время
Время и место
Дата: 19.12.2012 15:20:20
Может стоит все-таки заглянуть в табличку и внимательно посмотреть на поле с датой, на которое накладывается фильтр?
Вы с точностью в 101% найдете там дату и время. Когда же вы фильтруете записи по дате, то ваше сравнение выглядит так:
and '12:45:34 13:45:12' < '12:45:34 00:00:00'(ваш параметр, переменная, фильтр и т.п. и т.д.)
Kyamranbey
Дата: 19.12.2012 22:35:55
нет. в том то и дело исключаются абсолютно все записи второго запроса(не только на границе условия). т.е. если берем второй подзапрос - добавляем к нему внешнее условие, то выводится куча записей.
ощущение, что взяли условия у первого подзапроса и приставили ко второму(у первого как раз исключаются записи удовлетворяющие второму)

Но на плане ничего подобного не наблюдается - каждая ветка union all обрабатывается отдельно. и после применения trunc() просто исчезает финальный FILTER у второго подзапроса.
ORA__SQL
Дата: 19.12.2012 22:44:46
Время и место
and '12:45:34 13:45:12' < '12:45:34 00:00:00'
Календарь Майя
Время и место
Дата: 20.12.2012 09:10:07
ORA__SQL
Время и место
and '12:45:34 13:45:12' < '12:45:34 00:00:00'
Календарь Майя

Да уж... Заработался


and '21.12.2012 13:45:12' < '21.12.2012 00:00:00'
Время и место
Дата: 20.12.2012 09:12:37
Kyamranbey
нет. в том то и дело исключаются абсолютно все записи второго запроса(не только на границе условия). т.е. если берем второй подзапрос - добавляем к нему внешнее условие, то выводится куча записей.
ощущение, что взяли условия у первого подзапроса и приставили ко второму(у первого как раз исключаются записи удовлетворяющие второму)

Без поллитрыпримера не разберешься тут...
Проверьте на:
- время
- null
- или же тестовые данные и запрос в студию