powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / как оптимизировать запрос с двумя union?
5 сообщений из 5, страница 1 из 1
как оптимизировать запрос с двумя union?
    #32626292
kamuzon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select distinct  1 , yu.id, ys.id, streetname, yb.id, buildingno, porch, floor, flat, phone, agreementno, '' , nullif( 1 , 1 ), '', '', nullif( 1 , 1 )
 from yaol_streets ys, yaol_buildings yb, yaol_owners yo, yaol_users yu , yaol_user_counters yuc, yaol_user_counter_types yuct
 where ys.id=yb.streetid and yb.id=yo.buildingid and yu.ownerid=yo.id and yu.id=yuc.userid and yuc.countertype=yuct.id and ((yuc.countertype=- 32765  and yuc.countervalue> 33 ) or (yuc.countertype=- 32766  and yuc.countervalue> 33 ) or yuc.countertype=- 32755 ) and yb.id=- 32761  and ys.id=- 32765 

 union

select distinct  2 , yu.id, nullif( 1 , 1 ), '', nullif( 1 , 1 ), '', nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), i.ip , nullif( 1 , 1 ), '', '', nullif( 1 , 1 )
 from yaol_streets ys, yaol_buildings yb, yaol_owners yo, yaol_users yu, yaol_user_logins yul, ips i , yaol_user_counters yuc, yaol_user_counter_types yuct
 where ys.id=yb.streetid and yb.id=yo.buildingid and yu.ownerid=yo.id and yul.userid=yu.id and yul.ip=i.id and yu.id=yuc.userid and yuc.countertype=yuct.id and ((yuc.countertype=- 32765  and yuc.countervalue> 33 ) or (yuc.countertype=- 32766  and yuc.countervalue> 33 ) or yuc.countertype=- 32755 ) and yb.id=- 32761  and ys.id=- 32765 

 union

select distinct  3 , yu.id, nullif( 1 , 1 ), '',nullif( 1 , 1 ), '', nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), nullif( 1 , 1 ), '' , yuct.id, yuct.counternick, yuct.countername, yuc.countervalue
 from yaol_streets ys, yaol_buildings yb, yaol_owners yo, yaol_users yu, yaol_user_counters yuc, yaol_user_counter_types yuct
 where ys.id=yb.streetid and yb.id=yo.buildingid and yu.ownerid=yo.id and yuc.userid=yu.id and yuc.countertype=yuct.id and ((yuc.countertype=- 32765  and yuc.countervalue> 33 ) or (yuc.countertype=- 32766  and yuc.countervalue> 33 ) or yuc.countertype=- 32755 ) and yb.id=- 32761  and ys.id=- 32765 

 order by  4 , 6 , 7 , 9 

Вопрос: можно ли оптимизировать этот запрос так, чтобы сначала делалась выборка (назову её [предселект])
Код: plaintext
1.
2.
3.
select distinct yu.id
 from yaol_users yu , yaol_user_counters yuc
 where yu.id=yuc.userid and ((yuc.countertype=- 32765  and yuc.countervalue> 33 ) or (yuc.countertype=- 32766  and yuc.countervalue> 33 ) or yuc.countertype=- 32755 ) and yb.id=- 32761  and ys.id=- 32765 

А потом её результат использовался бы во всех остальных 3х селектах? Или нужно три раза этот [предселект] вставлять в каждый select в основном запросе? Нельзя ли перед запросом сделать какой-нибудь массив(?), из которого потом будут браться значения yu.id для других запросов, чтобы база не лопатила три раза одно и то же?
...
Рейтинг: 0 / 0
как оптимизировать запрос с двумя union?
    #32626358
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
with table_name as...?
...
Рейтинг: 0 / 0
как оптимизировать запрос с двумя union?
    #32628834
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, union (вместо union all) в этом запросе выглядит... очень странно.
...
Рейтинг: 0 / 0
как оптимизировать запрос с двумя union?
    #32628879
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А nullif(1,1), надо полагать, это замена cast(null as integer) или cast(null as shortint). Надо же, мне и в голову такое не приходило.
...
Рейтинг: 0 / 0
как оптимизировать запрос с двумя union?
    #32639657
kamuzon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно оно. я где-то это вычитал, вроде даже на этом форуме.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / как оптимизировать запрос с двумя union?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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