powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / константы в запросе и SELECT
5 сообщений из 5, страница 1 из 1
константы в запросе и SELECT
    #39992648
Albatross
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть у меня представление вида...


create view v_1

as

select 1 as flg, * from t1.... --сложный запрос

union all


select 2 as flg, * from t2.... --сложный запрос

;


когда я делаю select * from v_1 where flg = 1, вижу, что в плане запроса оба подзапроса из UNION работают.
как бы ему подсказать, что достаточно только первую часть смотреть? или может другой способ есть, чтобы сразу определить множество, которое нужно.
...
Рейтинг: 0 / 0
константы в запросе и SELECT
    #39992675
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Albatross,

Покажи план, скорее всего, ты его неправильно читаешь.
...
Рейтинг: 0 / 0
константы в запросе и SELECT
    #39992684
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
Connected to Oracle Database 18c Express Edition Release 18.0.0.0.0 
Connected as user1@//192.168.1.201:1522/XE

SQL> create table t1 as select rownum v from dual connect by level < 101;

Table created

SQL> alter table T1
  2    add constraint t1_pk primary key (V);

Table altered


SQL> create table t2 as select rownum v from dual connect by level < 101;

Table created


SQL> alter table t2 add constraint t2_pk primary key (v);

Table altered


SQL> create view tv as
  2   select 1 flag, t1.* from t1
  3     union all
  4    select 2 flag, t2.* from t2;

View created


SQL> explain plan for select * from tv where flag = 1;

Explained


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

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 4273322871

----------------------------------------------------------------------------
| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |       |   101 |  1616 |     1   (0)| 00:00:01 |
|   1 |  VIEW              | TV    |   101 |  1616 |     1   (0)| 00:00:01 |
|   2 |   UNION-ALL        |       |       |       |            |          |
|   3 |    INDEX FULL SCAN | T1_PK |   100 |   300 |     1   (0)| 00:00:01 |
|*  4 |    FILTER          |       |       |       |            |          |
|   5 |     INDEX FULL SCAN| T2_PK |   100 |   300 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------

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

   4 - filter(NULL IS NOT NULL)

17 rows selected


SQL> 

...
Рейтинг: 0 / 0
константы в запросе и SELECT
    #39992685
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
SQL> explain plan for select * from tv where flag = 2;

Explained


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

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 2568740826

----------------------------------------------------------------------------
| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |       |   101 |  1616 |     1   (0)| 00:00:01 |
|   1 |  VIEW              | TV    |   101 |  1616 |     1   (0)| 00:00:01 |
|   2 |   UNION-ALL        |       |       |       |            |          |
|*  3 |    FILTER          |       |       |       |            |          |
|   4 |     INDEX FULL SCAN| T1_PK |   100 |   300 |     1   (0)| 00:00:01 |
|   5 |    INDEX FULL SCAN | T2_PK |   100 |   300 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------

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

   3 - filter(NULL IS NOT NULL)

17 rows selected

...
Рейтинг: 0 / 0
константы в запросе и SELECT
    #39992690
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Albatross,

dmdmdm
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
----------------------------------------------------------------------------
| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |       |   101 |  1616 |     1   (0)| 00:00:01 |
|   1 |  VIEW              | TV    |   101 |  1616 |     1   (0)| 00:00:01 |
|   2 |   UNION-ALL        |       |       |       |            |          |
|*  3 |    FILTER          |       |       |       |            |          |
|   4 |     INDEX FULL SCAN| T1_PK |   100 |   300 |     1   (0)| 00:00:01 |
|   5 |    INDEX FULL SCAN | T2_PK |   100 |   300 |     1   (0)| 00:00:01 |
----------------------------------------------------------------------------

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

   3 - filter(NULL IS NOT NULL)



если видишь такую операцию FILTER в плане, значит все ок - дочерние операции выполняться не будут.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / константы в запросе и SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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