Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / cost запроса / 5 сообщений из 5, страница 1 из 1
16.10.2019, 15:13
    #39877130
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cost запроса
Всем привет, подскажите как можно уменьшить cost запроса, пробовал уже два варианта, но cost получился один и тот же. В первом примере cost увеличивается за счет grpoup by, во втором условие увеличивается при выполнение условия "WHERE k.rn = 1"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SELECT * 
  FROM product p
/*убираю дубликаты записей с одинаковым status expirydate contractid carnum*/    
 INNER JOIN (SELECT MAX(cd.carid) AS cadid
                    , cd.carnum
                    , cd.expirydate
                    , cd.status
                    , cd.contractid
                    , MAX(cd.product) AS product            
               FROM contracts cd          
              GROUP BY cd.carpan
                       , cd.expirydate
                       , cd.status
                       , cd.contractid
                       ) cd on (cd.contractid = p.contractid)
 INNER JOIN carattr cr ON (cr.objectid = cd.carid)
---------------------------------------------------------------
SELECT * 
  FROM product p
/*убираю дубликаты записей с одинаковым status expirydate contractid*/  
 INNER JOIN (SELECT k.rn
                    , k.carid
                    , k.status
                    , k.product
                    , k.expirydate
                    , k.contractid
               FROM ( SELECT ROW_NUMBER() OVER (partition BY c.carnum, c.status, c.expirydate, c.product ORDER BY c.carid desc) RN
                             , c.carid
                             , c.carnum
                             , c.status
                             , c.product
                             , c.expirydate
                             , c.contractid 
                        FROM cards c ) k
              WHERE k.rn = 1
                       ) cd on (cd.contractid = p.contractid)
 INNER JOIN carattr cr ON (cr.objectid = cd.carid)
					   
					   
...
Рейтинг: 0 / 0
16.10.2019, 16:17
    #39877175
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cost запроса
elimpion,

а ничего что запросы по разным таблицам ?

Оптимизация запроса
уже прошли ?
...
Рейтинг: 0 / 0
16.10.2019, 16:26
    #39877185
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cost запроса
elimpion,

Первый запрос не отработает.
...
Рейтинг: 0 / 0
17.10.2019, 12:17
    #39877602
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cost запроса
Взял второй запрос за основу, join заменил на exists. Cost намного снизился
...
Рейтинг: 0 / 0
17.10.2019, 12:33
    #39877625
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cost запроса
elimpionкак можно уменьшить cost запросаЕсть хинт, который уменьшает cost в два раза.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / cost запроса / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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