powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Min и Max в одном запросе
9 сообщений из 9, страница 1 из 1
Min и Max в одном запросе
    #37983808
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
Есть большая таблица с первичным ключом 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
Min и Max в одном запросе
    #37983915
ankalex,

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

По результатам можно будет смотреть дальше.
Возможно потребуется собрать определенную статистику (RUNSTATS) на таблицу.
Tuning single SQL statements with the no-charge query-tuning features in the workflow assistant
...
Рейтинг: 0 / 0
Min и Max в одном запросе
    #37984071
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Статистика собрана.
Через 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
Min и Max в одном запросе
    #37984183
ankalex,

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

Такое поведение может быть и багом оптимизатора в версии 10. Можете попробовать открыть проблему в IBM Support.
...
Рейтинг: 0 / 0
Min и Max в одном запросе
    #37984753
ankalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неа, ничего не порекомендовал.
...
Рейтинг: 0 / 0
Min и Max в одном запросе
    #37984874
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
Min и Max в одном запросе
    #37984926
with_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ankalex,
попробуйте вариант

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


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


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