Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Min и Max в одном запросе / 9 сообщений из 9, страница 1 из 1
04.10.2012, 15:09
    #37983808
ankalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Min и Max в одном запросе
Доброго времени суток!
Есть большая таблица с первичным ключом id, если выполнить запрос
Код: plsql
1.
select max(id),min(id) from Table

, то он будет выполняться несколько секунд, но если разделить его на 2 запроса:
Код: plsql
1.
select max(id) from Table

и
Код: plsql
1.
select min(id) from Table

, то каждый из них будет отрабатывать за несколько миллисекунд. Судя по всему, в первом случае происходит полное сканирование индекса. В других БД, с которыми приходилось работать подобного не встречал.
У кого-нибудь будут идеи, как проще всего направить оптимизатор на путь истинный?
DB2 for Z/OS V10
...
Рейтинг: 0 / 0
04.10.2012, 15:40
    #37983915
Min и Max в одном запросе
ankalex,

Нужно выполнить EXPLAIN для всех трех случаев и посмотреть результат.
Для этого можно воспользоваться например IBM Data Studio.

По результатам можно будет смотреть дальше.
Возможно потребуется собрать определенную статистику (RUNSTATS) на таблицу.
Tuning single SQL statements with the no-charge query-tuning features in the workflow assistant
...
Рейтинг: 0 / 0
04.10.2012, 16:38
    #37984071
ankalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Min и Max в одном запросе
Статистика собрана.
Через IBM Data Studio делал Start Tuning -> Generate Summary Report->Open Access Plan Graph), там видно, что Scanned Leaf Pages=Index Leaf Pages (=69672), т.е. сканируется весь индекс. В случае одной функции - Scanned Leaf Pages=1
...
Рейтинг: 0 / 0
04.10.2012, 17:22
    #37984183
Min и Max в одном запросе
ankalex,

А Statistics Advisor на этот SQL-оператор ничего не порекомендовал?
Он иногда предлагает выполнить RUNSTATS с кучей опций, которые самостоятельно подобрать можно, но сложно.
Да, не каждый RUNSTATS одинаково полезен.

Такое поведение может быть и багом оптимизатора в версии 10. Можете попробовать открыть проблему в IBM Support.
...
Рейтинг: 0 / 0
05.10.2012, 08:12
    #37984753
ankalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Min и Max в одном запросе
Неа, ничего не порекомендовал.
...
Рейтинг: 0 / 0
05.10.2012, 10:11
    #37984874
Min и Max в одном запросе
ankalexУ кого-нибудь будут идеи, как проще всего направить оптимизатор на путь истинный?
DB2 for Z/OS V10
Вероятно никак.
В случае с одной функцией MIN или MAX используется One-fetch index access.
Подробнее здесь: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z9.doc.perf%2Fsrc%2Ftpc%2Fdb2z_onefetchaccess.htm

One-fetch index access is a possible access path when:
...

The query includes only one aggregate function (either MIN or MAX).
...
...
Рейтинг: 0 / 0
05.10.2012, 10:31
    #37984926
with_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Min и Max в одном запросе
ankalex,
попробуйте вариант

with t1(vmax) as (select max()...),
t2(vmin) as (select min()...)
select vmax,vmin from t1,t2
...
Рейтинг: 0 / 0
05.10.2012, 10:56
    #37984982
Min и Max в одном запросе
with_ankalex,
попробуйте вариант

with t1(vmax) as (select max()...),
t2(vmin) as (select min()...)
select vmax,vmin from t1,t2

Или
select * from (select min(id) from Table) a cross join (select max(id) from Table) b

Но это несколько не то.
...
Рейтинг: 0 / 0
23.01.2013, 08:24
    #38120702
ankalex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Min и Max в одном запросе
Да,
Код: sql
1.
2.
3.
with t1(vmax) as (select max()...),
t2(vmin) as (select min()...)
select vmax,vmin from t1,t2 


работает быстро, спасибо.
...
Рейтинг: 0 / 0
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Min и Max в одном запросе / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]