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

Откуда:
Сообщений: 237
Всем привет! У меня такая трабла вылезла на пустом месте. Знающие, может, встречались.
База:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product
PL/SQL Release 10.2.0.1.0 - Production
"CORE	10.2.0.1.0	Production"
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production


Таблицы и их данные:
SELECT T1_ID id, T1_DATE DATE, KKM_NUM, T1_USER USER FROM T1
id         DATE                         KKM_NUM   USER
21240   07-АПР-10 16:58.54	   1	           SA	
      
SELECT T2_ID id, T2_DATE DATE, KKM_NUM, T2_USER USER FROM T2
id              KKM_NUM   DATE                         USER
137836240	1	        07-АПР-10 16:52.08	SA
137835240	1	        07-АПР-10 16:25.33	SA
      
SELECT iks_kkmnum, iks_zdate_from, iks_zdate_to, inkass.ksr_id1 FROM INKASS WHERE iks_id  = 35865240
iks_kkmnum   iks_zdate_from            iks_zdate_to             ksr_id1
1	           07-АПР-10 15:16.58	  08-АПР-10 15:16.58	SA

Делаю запрос 1:
SELECT T.*
FROM
  (SELECT T1_ID id, T1_DATE DATE, KKM_NUM, T1_USER USER FROM T1
  UNION ALL
  SELECT T2_ID id, T2_DATE DATE, KKM_NUM, T2_USER USER FROM T2
  ) T,
  inkass
WHERE iks_id  = 35865240
AND T.KKM_NUM = inkass.iks_kkmnum
AND T.date BETWEEN inkass.iks_zdate_from AND inkass.iks_zdate_to
AND upper(T.user) = upper(inkass.ksr_id1)

id              KKM_NUM   DATE                         USER
137836240	1	        07-АПР-10 16:52.08	SA
137835240	1	        07-АПР-10 16:25.33	SA

2 rows

Делаю запрос 2:
SELECT T.*
FROM
  (SELECT T1_ID id, T1_DATE DATE, KKM_NUM, T1_USER USER FROM T1
  UNION ALL
  SELECT T2_ID id, T2_DATE DATE, KKM_NUM, T2_USER USER FROM T2
  ) T,
  inkass
WHERE iks_id  = 35865240
AND T.KKM_NUM = inkass.iks_kkmnum
AND T.date BETWEEN inkass.iks_zdate_from AND to_date('08.04.2010 15:16','DD.MM.YYYY HH24:MI')
AND upper(T.user) = upper(inkass.ksr_id1)

--отличие только в to_date('08.04.2010 15:16','DD.MM.YYYY HH24:MI')

id              KKM_NUM   DATE                         USER
21240        1               07-АПР-10 16:58.54	SA	
137836240	1	        07-АПР-10 16:52.08	SA
137835240	1	        07-АПР-10 16:25.33	SA

3 rows.

Вопрос: почему запрос 1 не выдал тоже три строки.
Помогите плиз.
7 апр 10, 18:09    [8594504]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6712
Alexvmk,

SELECT T.*
FROM
  (SELECT T1_ID id, T1_DATE DATE, KKM_NUM, T1_USER USER FROM T1
  ) T,
  inkass
WHERE iks_id  = 35865240
AND T.KKM_NUM = inkass.iks_kkmnum
AND T.date BETWEEN inkass.iks_zdate_from AND inkass.iks_zdate_to
AND upper(T.user) = upper(inkass.ksr_id1)
что возвращает?
И
desc T1;
desc T2;
desc inkass;
7 апр 10, 18:19    [8594552]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
4ton
Member

Откуда:
Сообщений: 291
ну и наверно SELECT to_char(T1_DATE,'YYYY') FROM T1 where id=21240 вернет какую-нить гадость
7 апр 10, 18:29    [8594604]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54380
4ton
ну и наверно SELECT to_char(T1_DATE,'YYYY') FROM T1 where id=21240 вернет какую-нить гадость


неплохо бы во всех таблицах посмотреть даты в полном виде
7 апр 10, 19:01    [8594762]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116096
andreymx
4ton
ну и наверно SELECT to_char(T1_DATE,'YYYY') FROM T1 where id=21240 вернет какую-нить гадость


неплохо бы во всех таблицах посмотреть даты в полном виде


Да и desc-и мы ждем :)
7 апр 10, 19:04    [8594787]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54380
а с этой версией проблем не было?
7 апр 10, 19:07    [8594802]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
andreymx
а с этой версией проблем не было?


версия, конечно, хилая..
но, сначала, оч. хоч. на inkass.iks_zdate_to посмотреть и на dump от ея
7 апр 10, 19:12    [8594834]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
Спасибо за ответы. сейчас нет возможности все данные выдать. Позже все выложу.
7 апр 10, 20:36    [8595166]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Kevin
Member

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

Почему в запросах поля DATE и KKM_NUM перепутаны?
8 апр 10, 08:39    [8596185]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
Сейчас создал таблицы тестовые. И аналогичный для них запрос. Все верно - три строки возвращает. Странно..
8 апр 10, 09:34    [8596394]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
Нашел причину проблемы:
на таблицу T1 был установлен индекс:
CREATE INDEX T1_DATE_INDEX ON T1(T1_DATE DESC);

Если удалить индекс:
DROP INDEX TICKETCHECKSRETURNREMOTE_DATE;
то запрос правильно работает.

Также, если пересоздать индекс на сортировку по возрастанию (ASC), то запрос правильно работает.

Очень странно. Почему так интересно?
8 апр 10, 09:45    [8596460]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
Правка предыдущего сообщения:

Если удалить индекс:

DROP INDEX T1_DATE_INDEX;
8 апр 10, 09:46    [8596468]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
Похоже, что это глюк Oracle
8 апр 10, 10:46    [8596856]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
Alexvmk
Похоже, что это глюк Oracle


Где тест-кейс?
8 апр 10, 13:13    [8598132]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Alexvmk
Member

Откуда:
Сообщений: 237
suPPLer
Alexvmk
Похоже, что это глюк Oracle


Где тест-кейс?


CREATE TABLE T1 
(
  T1_ID NUMBER NOT NULL 
, T1_DATE DATE DEFAULT sysdate NOT NULL 
, KKM_NUM NUMBER NOT NULL 
, T1_USER VARCHAR2(100 CHAR) DEFAULT user NOT NULL 
, CONSTRAINT T1_PK PRIMARY KEY 
  (
    T1_ID 
  )
  ENABLE 
)
/
CREATE TABLE T2 
(
  T2_ID NUMBER NOT NULL 
, T2_DATE DATE DEFAULT sysdate NOT NULL 
, KKM_NUM NUMBER NOT NULL 
, T2_USER VARCHAR2(100 CHAR) DEFAULT user NOT NULL 
, CONSTRAINT T2_PK PRIMARY KEY 
  (
    T2_ID 
  )
  ENABLE 
)
/
CREATE TABLE T_FILTER 
(
  T_FIL_ID NUMBER NOT NULL 
, T_FIL_DATE_FROM DATE NOT NULL 
, T_FIL_DATE_TO DATE NOT NULL 
, KKM_NUM NUMBER NOT NULL 
, T_FIL_USER VARCHAR2(20) 
, CONSTRAINT T_FILTER_PK PRIMARY KEY 
  (
    T_FIL_ID 
  )
  ENABLE 
)
/
-- T1 inserting
INSERT INTO T1 (T1_ID, T1_DATE, KKM_NUM, T1_USER)
VALUES (1, to_date('07.04.2010 16:58','DD.MM.YYYY HH24:MI'), 1, 'SA')
/

-- T2 inserting
INSERT INTO T2 (T2_ID, T2_DATE, KKM_NUM, T2_USER)
VALUES (2, to_date('07.04.2010 16:52','DD.MM.YYYY HH24:MI'), 1, 'SA')
/
INSERT INTO T2 (T2_ID, T2_DATE, KKM_NUM, T2_USER)
VALUES (3, to_date('07.04.2010 16:25','DD.MM.YYYY HH24:MI'), 1, 'SA')
/

-- T_FILTER inserting
INSERT INTO T_FILTER (T_FIL_ID, T_FIL_DATE_FROM, 
T_FIL_DATE_TO, 
KKM_NUM, T_FIL_USER)
VALUES (1, to_date('07.04.2010 15:16','DD.MM.YYYY HH24:MI'),
to_date('08.04.2010 15:16','DD.MM.YYYY HH24:MI'),
1, 'SA')
/
commit;

Запрос 1:
SQL> SELECT T.T_ID,
  2    T.T_DATE,
  3    T_FILTER.T_FIL_ID,
  4    T_FILTER.T_FIL_DATE_FROM,
  5    T_FIL_DATE_TO
  6  FROM
  7    (SELECT T1_ID t_id, T1_DATE t_date, KKM_NUM, T1_USER t_user FROM T1
  8    UNION ALL
  9    SELECT T2_ID, T2_DATE, KKM_NUM, T2_USER FROM T2
 10    ) T,
 11    T_FILTER
 12  WHERE T_FIL_ID = 1
 13  AND T.KKM_NUM  = T_FILTER.KKM_NUM
 14  AND T.t_date BETWEEN T_FIL_DATE_FROM AND T_FIL_DATE_TO
 15  AND upper(T.t_user) = upper(T_FIL_USER);

      T_ID T_DATE     T_FIL_ID T_FIL_DA T_FIL_DA
---------- -------- ---------- -------- --------
         1 07.04.10          1 07.04.10 08.04.10
         2 07.04.10          1 07.04.10 08.04.10
         3 07.04.10          1 07.04.10 08.04.10

DESC индекс:
CREATE INDEX T1_DATE_INDEX ON T1 (T1_DATE DESC);

Тот же запрос:
SQL> SELECT T.T_ID,
  2    T.T_DATE,
  3    T_FILTER.T_FIL_ID,
  4    T_FILTER.T_FIL_DATE_FROM,
  5    T_FIL_DATE_TO
  6  FROM
  7    (SELECT T1_ID t_id, T1_DATE t_date, KKM_NUM, T1_USER t_user FROM T1
  8    UNION ALL
  9    SELECT T2_ID, T2_DATE, KKM_NUM, T2_USER FROM T2
 10    ) T,
 11    T_FILTER
 12  WHERE T_FIL_ID = 1
 13  AND T.KKM_NUM  = T_FILTER.KKM_NUM
 14  AND T.t_date BETWEEN T_FIL_DATE_FROM AND T_FIL_DATE_TO
 15  AND upper(T.t_user) = upper(T_FIL_USER);

      T_ID T_DATE     T_FIL_ID T_FIL_DA T_FIL_DA
---------- -------- ---------- -------- --------
         2 07.04.10          1 07.04.10 08.04.10
         3 07.04.10          1 07.04.10 08.04.10

DROP INDEX T1_DATE_INDEX;

Тот же запрос:
SQL> SELECT T.T_ID,
  2    T.T_DATE,
  3    T_FILTER.T_FIL_ID,
  4    T_FILTER.T_FIL_DATE_FROM,
  5    T_FIL_DATE_TO
  6  FROM
  7    (SELECT T1_ID t_id, T1_DATE t_date, KKM_NUM, T1_USER t_user FROM T1
  8    UNION ALL
  9    SELECT T2_ID, T2_DATE, KKM_NUM, T2_USER FROM T2
 10    ) T,
 11    T_FILTER
 12  WHERE T_FIL_ID = 1
 13  AND T.KKM_NUM  = T_FILTER.KKM_NUM
 14  AND T.t_date BETWEEN T_FIL_DATE_FROM AND T_FIL_DATE_TO
 15  AND upper(T.t_user) = upper(T_FIL_USER);

      T_ID T_DATE     T_FIL_ID T_FIL_DA T_FIL_DA
---------- -------- ---------- -------- --------
         1 07.04.10          1 07.04.10 08.04.10
         2 07.04.10          1 07.04.10 08.04.10
         3 07.04.10          1 07.04.10 08.04.10

ASC индекс:
CREATE INDEX T1_DATE_INDEX ON T1 (T1_DATE ASC);

Тот же запрос:
SQL> SELECT T.T_ID,
  2    T.T_DATE,
  3    T_FILTER.T_FIL_ID,
  4    T_FILTER.T_FIL_DATE_FROM,
  5    T_FIL_DATE_TO
  6  FROM
  7    (SELECT T1_ID t_id, T1_DATE t_date, KKM_NUM, T1_USER t_user FROM T1
  8    UNION ALL
  9    SELECT T2_ID, T2_DATE, KKM_NUM, T2_USER FROM T2
 10    ) T,
 11    T_FILTER
 12  WHERE T_FIL_ID = 1
 13  AND T.KKM_NUM  = T_FILTER.KKM_NUM
 14  AND T.t_date BETWEEN T_FIL_DATE_FROM AND T_FIL_DATE_TO
 15  AND upper(T.t_user) = upper(T_FIL_USER);

      T_ID T_DATE     T_FIL_ID T_FIL_DA T_FIL_DA
---------- -------- ---------- -------- --------
         1 07.04.10          1 07.04.10 08.04.10
         2 07.04.10          1 07.04.10 08.04.10
         3 07.04.10          1 07.04.10 08.04.10
8 апр 10, 17:44    [8600452]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54380
Alexvmk,

ты на всякий случай всё-таки выведи из таблиц даты с полными годами - посмотреть
8 апр 10, 18:40    [8600828]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54380
проверил на XE - действительно, ситуация аналогичная.
При DESC индексе данные пропадают.
Если добавить аналогичный индекс для Т2, то запрос данных вообще не отбирает
8 апр 10, 18:49    [8600866]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54380
если закомментарить любую из частей подзапроса, то из второй части данные отбираются нормально
8 апр 10, 18:50    [8600870]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Воспроизводится на 10.2.0.4
9 апр 10, 02:47    [8601880]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 3778
Alexvmk,

забавно оно гуляет:

SQL> SELECT /*+ index (T1 T1_DATE_INDEX) */ /**/ T.T_ID,
  2         T.T_DATE,
  3         T_FILTER.T_FIL_ID,
  4         T_FILTER.T_FIL_DATE_FROM,
  5         T_FIL_DATE_TO
  6    FROM (SELECT T1_ID t_id,
  7                 T1_DATE t_date,
  8                 KKM_NUM,
  9                 T1_USER t_user
 10            FROM T1
 11          UNION ALL
 12          SELECT T2_ID,
 13                 T2_DATE,
 14                 KKM_NUM,
 15                 T2_USER
 16            FROM T2) T, T_FILTER
 17   WHERE     T_FIL_ID = 1
 18         AND T.KKM_NUM = T_FILTER.KKM_NUM
 19         AND T.t_date BETWEEN T_FIL_DATE_FROM AND T_FIL_DATE_TO
 20         AND UPPER (T.t_user) = UPPER (T_FIL_USER);


Execution Plan
----------------------------------------------------------
Plan hash value: 2460617168

-------------------------------------------------------------------------------------------------
| Id  | Operation                       | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |               |     1 |   149 |     5   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                   |               |     1 |   149 |     5   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID   | T_FILTER      |     1 |    99 |     1   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN            | T_FILTER_PK   |     1 |       |     1   (0)| 00:00:01 |
|   4 |   VIEW                          |               |     1 |    50 |     4   (0)| 00:00:01 |
|   5 |    UNION ALL PUSHED PREDICATE   |               |       |       |            |          |
|*  6 |     FILTER                      |               |       |       |            |          |
|*  7 |      TABLE ACCESS BY INDEX ROWID| T1            |     1 |   237 |     1   (0)| 00:00:01 |
|*  8 |       INDEX RANGE SCAN          | T1_DATE_INDEX |     1 |       |     1   (0)| 00:00:01 |
|*  9 |     FILTER                      |               |       |       |            |          |
|* 10 |      TABLE ACCESS FULL          | T2            |     1 |   237 |     3   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("T_FIL_ID"=1)
   6 - filter("T_FIL_DATE_FROM"<="T_FIL_DATE_TO")
   7 - filter("KKM_NUM"="T_FILTER"."KKM_NUM" AND UPPER("T1_USER")=UPPER("T_FIL_USER"))
   8 - access(SYS_OP_DESCEND("T1_DATE")>=SYS_OP_DESCEND(:B1) AND
              SYS_OP_DESCEND("T1_DATE")<=SYS_OP_DESCEND(:B2))
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("T1_DATE"))>="T_FIL_DATE_FROM" AND
              SYS_OP_UNDESCEND(SYS_OP_DESCEND("T1_DATE"))<="T_FIL_DATE_TO")
   9 - filter("T_FIL_DATE_FROM"<="T_FIL_DATE_TO")
  10 - filter("KKM_NUM"="T_FILTER"."KKM_NUM" AND "T2_DATE">="T_FIL_DATE_FROM" AND
              "T2_DATE"<="T_FIL_DATE_TO" AND UPPER("T2_USER")=UPPER("T_FIL_USER"))

Note
-----
   - dynamic sampling used for this statement


Statistics
----------------------------------------------------------
         19  recursive calls
          0  db block gets
         59  consistent gets
          0  physical reads
          0  redo size
        642  bytes sent via SQL*Net to client
        392  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          3  rows processed

SQL> /


Execution Plan
----------------------------------------------------------
Plan hash value: 2460617168

-------------------------------------------------------------------------------------------------
| Id  | Operation                       | Name          | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |               |     1 |   149 |     5   (0)| 00:00:01 |
|   1 |  NESTED LOOPS                   |               |     1 |   149 |     5   (0)| 00:00:01 |
|   2 |   TABLE ACCESS BY INDEX ROWID   | T_FILTER      |     1 |    99 |     1   (0)| 00:00:01 |
|*  3 |    INDEX UNIQUE SCAN            | T_FILTER_PK   |     1 |       |     1   (0)| 00:00:01 |
|   4 |   VIEW                          |               |     1 |    50 |     4   (0)| 00:00:01 |
|   5 |    UNION ALL PUSHED PREDICATE   |               |       |       |            |          |
|*  6 |     FILTER                      |               |       |       |            |          |
|*  7 |      TABLE ACCESS BY INDEX ROWID| T1            |     1 |   237 |     1   (0)| 00:00:01 |
|*  8 |       INDEX RANGE SCAN          | T1_DATE_INDEX |     1 |       |     1   (0)| 00:00:01 |
|*  9 |     FILTER                      |               |       |       |            |          |
|* 10 |      TABLE ACCESS FULL          | T2            |     1 |   237 |     3   (0)| 00:00:01 |
-------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   3 - access("T_FIL_ID"=1)
   6 - filter("T_FIL_DATE_FROM"<="T_FIL_DATE_TO")
   7 - filter("KKM_NUM"="T_FILTER"."KKM_NUM" AND UPPER("T1_USER")=UPPER("T_FIL_USER"))
   8 - access(SYS_OP_DESCEND("T1_DATE")>=SYS_OP_DESCEND(:B1) AND
              SYS_OP_DESCEND("T1_DATE")<=SYS_OP_DESCEND(:B2))
       filter(SYS_OP_UNDESCEND(SYS_OP_DESCEND("T1_DATE"))>="T_FIL_DATE_FROM" AND
              SYS_OP_UNDESCEND(SYS_OP_DESCEND("T1_DATE"))<="T_FIL_DATE_TO")
   9 - filter("T_FIL_DATE_FROM"<="T_FIL_DATE_TO")
  10 - filter("KKM_NUM"="T_FILTER"."KKM_NUM" AND "T2_DATE">="T_FIL_DATE_FROM" AND
              "T2_DATE"<="T_FIL_DATE_TO" AND UPPER("T2_USER")=UPPER("T_FIL_USER"))

Note
-----
   - dynamic sampling used for this statement


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
         11  consistent gets
          0  physical reads
          0  redo size
        623  bytes sent via SQL*Net to client
        392  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          2  rows processed

SQL>
9 апр 10, 03:17    [8601886]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Возможно Bug 7022982. В 11.2 пофиксено.
9 апр 10, 03:39    [8601896]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Disable multi-level predicate pushing by setting
"_optimizer_multi_level_push_pred" to false.
Нет такого в 10.2.0.4
9 апр 10, 03:46    [8601901]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
Помогает
alter session set "_optimizer_push_pred_cost_based"=false
9 апр 10, 03:48    [8601902]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
Вячеслав Любомудров
Member

Откуда: Владивосток
Сообщений: 18483
И индекс перестает использоваться :-)
9 апр 10, 03:49    [8601905]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с Union ALL  [new]
wurdu
Member

Откуда: Владивосток
Сообщений: 4441
Вячеслав Любомудров
Помогает
alter session set "_optimizer_push_pred_cost_based"=false
Только в этом случае не используется union all pushed predicate и соответственно индекс. Аналогично хинту /*+ no_push_pred(t) */.
9 апр 10, 03:53    [8601907]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить