Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Добрый день!
Подскажите, можно ли еще как-то оптимизировать данный запрос? Заранее спасибо.

Баннер
[/src]Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options[SRC PLSQL]

Сам запрос

[/src]select t.id from bwx.doc t 
where t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
and t.is_authorization = 'N' and t.request_category = 'P' and t.message_category = 'M'
and t.posting_status = 'D'
union
select d.id from bwx.doc d 
where d.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
and d.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
and d.is_authorization = 'N' and d.request_category = 'P' and d.message_category = 'M'
and d.posting_status = 'E';[SRC PLSQL]


План выполнения

[/src]PLAN_TABLE_OUTPUT                                                                                          
---------------------------------------------------------------------------------------------------------- 
Plan hash value: 3251825277                                                                                
                                                                                                           
-----------------------------------------------------------------------------------------------------------
| Id  | Operation                      | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |          |     2 |    46 |    18  (56)| 00:00:01 |       |       |
|   1 |  SORT UNIQUE                   |          |     2 |    46 |    18  (56)| 00:00:01 |       |       |
|   2 |   UNION-ALL                    |          |       |       |            |          |       |       |
|   3 |    PARTITION HASH ALL          |          |     1 |    23 |     8   (0)| 00:00:01 |     1 |     8 |
|*  4 |     TABLE ACCESS BY INDEX ROWID| DOC      |     1 |    23 |     8   (0)| 00:00:01 |       |       |
|*  5 |      INDEX RANGE SCAN          | DOC_DATE |    21 |       |     2   (0)| 00:00:01 |     1 |     8 |
|   6 |    PARTITION HASH ALL          |          |     1 |    23 |     8   (0)| 00:00:01 |     1 |     8 |
|*  7 |     TABLE ACCESS BY INDEX ROWID| DOC      |     1 |    23 |     8   (0)| 00:00:01 |       |       |
|*  8 |      INDEX RANGE SCAN          | DOC_DATE |    21 |       |     2   (0)| 00:00:01 |     1 |     8 |
-----------------------------------------------------------------------------------------------------------
                                                                                                           
Predicate Information (identified by operation id):                                                        
---------------------------------------------------                                                        
                                                                                                           
   4 - filter("T"."POSTING_STATUS"='D' AND "T"."IS_AUTHORIZATION"='N' AND                                  
              "T"."REQUEST_CATEGORY"='P' AND "T"."MESSAGE_CATEGORY"='M')                                   
   5 - access("T"."AMND_DATE">=TO_DATE(' 2011-06-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND               
              "T"."AMND_DATE"<=TO_DATE(' 2011-06-30 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))                  
   7 - filter("D"."POSTING_STATUS"='E' AND "D"."IS_AUTHORIZATION"='N' AND                                  
              "D"."REQUEST_CATEGORY"='P' AND "D"."MESSAGE_CATEGORY"='M')                                   
   8 - access("D"."AMND_DATE">=TO_DATE(' 2011-06-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND               
              "D"."AMND_DATE"<=TO_DATE(' 2011-06-30 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))                  [SRC PHP]
4 окт 11, 19:00    [11384305]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
Прям какое-то "доктор, у меня где-то болит..."
4 окт 11, 19:05    [11384339]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Дон Бассаэро
Member

Откуда: from dual
Сообщений: 117
dblackcat
можно ли еще как-то оптимизировать данный запрос?


То есть он уже оптимизировался? Покажите первоначальный вариант :)

id случайно не уникален в табличке doc? Если уникален, то зачем убивать дубликаты? Вобщем, либо выбросите union, либо замените его на union all.
4 окт 11, 19:22    [11384416]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
dblackcat,

doc.amnd_state точно не важен?
4 окт 11, 19:26    [11384429]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
-2-
Member

Откуда:
Сообщений: 15330
union
OR
4 окт 11, 19:28    [11384434]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
-2-
union
OR

Точно.

t.posting_status IN ('D', E')
4 окт 11, 19:43    [11384487]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
Блин.
t.posting_status IN ('D', 'E')
[/quot]
4 окт 11, 19:43    [11384490]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
hexcept
Member

Откуда:
Сообщений: 237
select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
5 окт 11, 09:36    [11385789]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Капитат очевидностъ
Guest
hexcept
select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')

Спасибо.
5 окт 11, 09:45    [11385819]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Всем спасибо за советы.
Alexander Konakov
dblackcat,

doc.amnd_state точно не важен?

В данный момент нет, не важен, нужна история.

Дон Бассаэро
dblackcat
можно ли еще как-то оптимизировать данный запрос?


То есть он уже оптимизировался? Покажите первоначальный вариант :)

id случайно не уникален в табличке doc? Если уникален, то зачем убивать дубликаты? Вобщем, либо выбросите union, либо замените его на union all.

id уникален, это и есть первоначальный вариант


[/SRC]select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')[SRC PHP]


План
[/SRC]---------------------------------------------------------------------------------------------------------
| Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |          |     1 |    23 |     8   (0)| 00:00:01 |       |       |
|   1 |  PARTITION HASH ALL          |          |     1 |    23 |     8   (0)| 00:00:01 |     1 |     8 |
|*  2 |   TABLE ACCESS BY INDEX ROWID| DOC      |     1 |    23 |     8   (0)| 00:00:01 |       |       |
|*  3 |    INDEX RANGE SCAN          | DOC_DATE |    21 |       |     2   (0)| 00:00:01 |     1 |     8 |
---------------------------------------------------------------------------------------------------------
                                                                                                         
Predicate Information (identified by operation id):                                                      
---------------------------------------------------                                                      
                                                                                                         
   2 - filter("IS_AUTHORIZATION"='N' AND "REQUEST_CATEGORY"='P' AND ("T"."POSTING_STATUS"='D' OR         
              "T"."POSTING_STATUS"='E') AND "MESSAGE_CATEGORY"='M')                                      
   3 - access("T"."AMND_DATE">=TO_DATE(' 2011-06-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND             
              "T"."AMND_DATE"<=TO_DATE(' 2011-06-30 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))                [SRC PHP]
5 окт 11, 10:27    [11386105]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
hexcept
select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')

И нафига тут этот join?
5 окт 11, 11:25    [11386513]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Alexander Konakov
И нафига тут этот join?

Если без join запрос возвращает много лишних данных за прошлые года.
5 окт 11, 11:52    [11386747]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
ну и что это за бред?
бредовый запрос и план не от него
5 окт 11, 11:57    [11386800]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Вот без join
[/SRC]select t.id
from bwx.doc t
where t.is_authorization = 'N'
 and t.request_category = 'P'
 and t.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')[SRC oracle]

приведу с командной строкой для сомневающихся

[/SRC]SQL> explain plan for select t.id from bwx.doc t
  2  where t.is_authorization = 'N' and t.request_category = 'P' and t.message_category = 'M'
  3  and t.posting_status in ('D','E')
  4  and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
  5  and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS');

Explained.

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
Plan hash value: 1908177218                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
---------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
| Id  | Operation                    | Name     | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
---------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
|   0 | SELECT STATEMENT             |          |     1 |    23 |     8   (0)| 00:00:01 |       |       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
|   1 |  PARTITION HASH ALL          |          |     1 |    23 |     8   (0)| 00:00:01 |     1 |     8 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
|*  2 |   TABLE ACCESS BY INDEX ROWID| DOC      |     1 |    23 |     8   (0)| 00:00:01 |       |       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
|*  3 |    INDEX RANGE SCAN          | DOC_DATE |    21 |       |     2   (0)| 00:00:01 |     1 |     8 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
---------------------------------------------------------------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
Predicate Information (identified by operation id):                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
---------------------------------------------------                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
   2 - filter("T"."IS_AUTHORIZATION"='N' AND "T"."REQUEST_CATEGORY"='P' AND                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
              ("T"."POSTING_STATUS"='D' OR "T"."POSTING_STATUS"='E') AND "T"."MESSAGE_CATEGORY"='M')                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
   3 - access("T"."AMND_DATE">=TO_DATE(' 2011-06-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
              "T"."AMND_DATE"<=TO_DATE(' 2011-06-30 23:59:59', 'syyyy-mm-dd hh24:mi:ss'))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

18 rows selected.[SRC oracle]
5 окт 11, 12:12    [11386924]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
dblackcat
Alexander Konakov
И нафига тут этот join?

Если без join запрос возвращает много лишних данных за прошлые года.

Да ну?
И даже так?
select d.id
from bwx.doc d
where
 d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and d.posting_status in ('D','E')
 and d.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and d.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
5 окт 11, 12:13    [11386934]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Ладно, всем кто помог огромное спасибо, оставим в таком виде.
5 окт 11, 12:14    [11386941]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
dblackcat,

аффтар, прекращай путаться в показаниях
5 окт 11, 12:14    [11386951]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
dblackcat
Member

Откуда: средняя полоса в средней полосе
Сообщений: 35
Alexander Konakov
dblackcat
пропущено...

Если без join запрос возвращает много лишних данных за прошлые года.

Да ну?
И даже так?
select d.id
from bwx.doc d
where
 d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and d.posting_status in ('D','E')
 and d.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and d.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')


не все нормально, я проверил, лишних данный нет, спасибо Александр.
5 окт 11, 12:15    [11386963]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
hexcept
Member

Откуда:
Сообщений: 237
"А вы их есть пробовали?" :-) С джойном и без?
5 окт 11, 12:39    [11387153]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
hexcept
"А вы их есть пробовали?" :-) С джойном и без?

Пробовал.

       (1)  SELECT STATEMENT  ALL_ROWS 
       (7)  NESTED LOOPS 
           (4)  PARTITION HASH ALL 
               (3)  TABLE TABLE ACCESS BY INDEX ROWID OWS.DOC
                   (2)  INDEX INDEX RANGE SCAN OWS.DOC_DATE
           (6)  TABLE TABLE ACCESS BY INDEX ROWID OWS.DOC
               (5)  INDEX (UNIQUE) INDEX UNIQUE SCAN OWS.PK_DOC
5 окт 11, 13:53    [11387948]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
hexcept
Member

Откуда:
Сообщений: 237
Alexander Konakov
Пробовал.

Да я не про план, а про время выполнения. А план - ну и что? 1) ничего страшного, 2) не икона же...
5 окт 11, 14:19    [11388289]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Alexander Konakov
Member

Откуда:
Сообщений: 1027
hexcept
Alexander Konakov
Пробовал.

Да я не про план, а про время выполнения. А план - ну и что? 1) ничего страшного, 2) не икона же...

Зачем добавлять проход по PK, если для получения необходимых документов можно обойтись одним индексом (по дате)?
5 окт 11, 14:44    [11388571]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
hexcept
Member

Откуда:
Сообщений: 237
Alexander Konakov
Зачем добавлять проход по PK, если для получения необходимых документов можно обойтись одним индексом (по дате)?
Слова - правильные, вопрос - логичен абсолютно.
Идея тривиальна - заставить сервер первым проходом обрабатывать ТОЛЬКО ИНДЕКСЫ, без обращения к таблице (партиционированной, к тому же). При хорошей селективности (а это так: даты дают 1/24, - речь ведь о Way4? - плюс ломовое posting_status in ('D','E'), и индекс по нему в ведущей части есть) накладные расходы на 2 проход окупаются многократно. У меня - раз в 50 min. М.б., у ТС данных в процессинге - "раз-два и обчелся", железка - монстр, а DBA - профи, и никакой разницы он просто не заметит (и даже увидит ухудшение). В-общем, конкретное лекарство - для конкретного случая.
6 окт 11, 09:46    [11392642]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
здесь кто-то очень сильно тупит...
6 окт 11, 10:21    [11392881]     Ответить | Цитировать Сообщить модератору
 Re: Помогите оптимизировать запрос  [new]
Мир труд жвачка
Member

Откуда:
Сообщений: 1527
hexcept
Alexander Konakov
Зачем добавлять проход по PK, если для получения необходимых документов можно обойтись одним индексом (по дате)?
Слова - правильные, вопрос - логичен абсолютно.
Идея тривиальна - заставить сервер первым проходом обрабатывать ТОЛЬКО ИНДЕКСЫ, без обращения к таблице (партиционированной, к тому же). При хорошей селективности (а это так: даты дают 1/24, - речь ведь о Way4? - плюс ломовое posting_status in ('D','E'), и индекс по нему в ведущей части есть) накладные расходы на 2 проход окупаются многократно. У меня - раз в 50 min. М.б., у ТС данных в процессинге - "раз-два и обчелся", железка - монстр, а DBA - профи, и никакой разницы он просто не заметит (и даже увидит ухудшение). В-общем, конкретное лекарство - для конкретного случая.

Из планов запроса автора ясно видно, что в индексе DOC_DATE нет поля t.posting_status.
Даже если бы это поле было в индексе, то для такого запроса
select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
обращение к таблице было бы необходимо для доставания поля id.

И даже если бы в индексе doc_date были бы поля posting_status и id
то даже в этом случае
1. после доставания из индекса doc_date поля id,
2. надо было искать rowid по этому id в PK,
3. оттуда получать rowid
4. доставать остальные поля в таблице по этому rowid

когда можно было бы
1. достать rowid из индекса doc_date
2. и по нему достать строку из таблицы

Такой вариант:
select d.id
from bwx.doc t,bwx.doc d
where
 d.id=t.id
 and d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and t.posting_status in ('D','E')
 and t.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and t.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')

может быть быстрее, чем
select d.id
from bwx.doc d
where
 d.is_authorization = 'N'
 and d.request_category = 'P'
 and d.message_category = 'M'
 and d.posting_status in ('D','E')
 and d.amnd_date >= to_date('2011-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS')
 and d.amnd_date <= to_date('2011-06-30 23:59:59','YYYY-MM-DD HH24:MI:SS')
только если оракл для второго построит совсем уж хреновый план. Но и это стоило бы лечить не таким странным способом как переписывание простого запроса на кучу джоинов.
6 окт 11, 10:41    [11392977]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить