Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / будет ли использоваться условие во вьюхе? / 7 сообщений из 7, страница 1 из 1
11.09.2020, 10:17
    #39997539
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
Господа, надо мне объединить несколько таблиц в одну вьюху, откуда потом буду делать select по дням.
Код: plsql
1.
2.
SELECT * FROM BODI_DATA.TOPRICE_ALL 
WHERE CALDAY = '2017-07-05' 



при этом в исходных данных индексов нет, а сама дата в виде строки

поможет ли мне наличие таких фильтров, чтобы запрос выходил сразу на нужную таблицу или все это бесполезно?

Код: plsql
1.
WHERE CALDAY >= '2017-01-01' AND CALDAY < '2017-04-01'



Код: 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.
CREATE OR REPLACE VIEW BODI_DATA.TOPRICE_ALL 
AS 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201701
WHERE CALDAY >= '2017-01-01' AND CALDAY < '2017-04-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201702
WHERE CALDAY >= '2017-04-01' AND CALDAY < '2017-07-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201703
WHERE CALDAY >= '2017-07-01' AND CALDAY < '2017-10-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201704
WHERE CALDAY >= '2017-10-01' AND CALDAY < '2018-01-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201801
WHERE CALDAY >= '2018-01-01' AND CALDAY < '2018-04-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201802
WHERE CALDAY >= '2018-04-01' AND CALDAY < '2018-07-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201803
WHERE CALDAY >= '2018-07-01' AND CALDAY < '2018-10-01'
UNION ALL 
SELECT PLANT, MATERIAL, CALDAY, ZPRICE, ZPRCLST, ZPRCLST2, ZPRCLSTT, ZPRCLSTT2
FROM BODI_DATA.TOPRICE201804
WHERE CALDAY >= '2018-10-01' AND CALDAY < '2019-01-01'
;
...
Рейтинг: 0 / 0
11.09.2020, 10:21
    #39997540
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
a_voronin,

чуту не по теме
CALDAY какого типа в таблице (date)?

.....
stax
...
Рейтинг: 0 / 0
11.09.2020, 10:23
    #39997542
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
a_voronin
поможет ли мне наличие таких фильтров, чтобы запрос выходил сразу на нужную таблицу или все это бесполезно?
а попробовать нельзя?
...
Рейтинг: 0 / 0
11.09.2020, 10:43
    #39997553
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
Stax,
varchar(10)
...
Рейтинг: 0 / 0
11.09.2020, 10:46
    #39997557
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
a_voronin,

теоретически, может и выходить, надо план смотреть

недавно xtender об'яснял

.....
stax
...
Рейтинг: 0 / 0
11.09.2020, 10:47
    #39997558
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
Stax
a_voronin,

теоретически, может и выходить, надо план смотреть

недавно xtender об'яснял

.....
stax
я бы написал
не помешает так точно
...
Рейтинг: 0 / 0
11.09.2020, 10:52
    #39997561
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
будет ли использоваться условие во вьюхе?
a_voronin
а сама дата в виде строки

Что сразу делает значения NLS-зависимыми.

Должно помочь, при условии, что входной фильтр будет стопроцентно совпадать с одним из фильтров в union all. Для остальных шагов в плане будет FILTER (NULL IS NOT NULL).

upd. примерно так

Код: 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.
create table dropme_t1 as select  '2010-02-01' dts from dual union all select '2010-04-01' from dual;
create table dropme_t2 as select '2010-06-01' dts from dual union all select '2010-07-01' from dual;


create or replace view dropme_v as 
select dts from dropme_t1 where dts >= '2010-01-01' and dts < '2010-05-01' 
union all 
select dts from dropme_t2 where dts >= '2010-05-01' and dts < '2010-08-01';

set autotrace on
select * from dropme_v where dts >= '2010-01-01' and dts < '2010-05-01';

------------------------------------------------------------------------------------------
| Id  | Operation                    | Name      | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |           |     2 |    24 |     4   (0)| 00:00:01 |
|   1 |  VIEW                        | DROPME_V  |     3 |    36 |     3   (0)| 00:00:01 |
|   2 |   UNION-ALL                  |           |       |       |            |          |
|*  3 |    TABLE ACCESS STORAGE FULL | DROPME_T1 |     2 |    24 |     3   (0)| 00:00:01 |
|*  4 |    FILTER                    |           |       |       |            |          |
|*  5 |     TABLE ACCESS STORAGE FULL| DROPME_T2 |     1 |    12 |     3   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------

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

   3 - storage("DTS">='2010-01-01' AND "DTS"<'2010-05-01')
       filter("DTS">='2010-01-01' AND "DTS"<'2010-05-01')
   4 - filter(NULL IS NOT NULL)
   5 - storage("DTS">='2010-05-01' AND "DTS"<'2010-05-01')
       filter("DTS">='2010-05-01' AND "DTS"<'2010-05-01')
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / будет ли использоваться условие во вьюхе? / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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