powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / cost запроса
5 сообщений из 5, страница 1 из 1
cost запроса
    #39877130
elimpion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет, подскажите как можно уменьшить 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
cost запроса
    #39877175
123йй
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
elimpion,

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

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

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


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