powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / будет ли использоваться условие во вьюхе?
7 сообщений из 7, страница 1 из 1
будет ли использоваться условие во вьюхе?
    #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
будет ли использоваться условие во вьюхе?
    #39997540
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voronin,

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

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

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

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

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

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

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

.....
stax
я бы написал
не помешает так точно
...
Рейтинг: 0 / 0
будет ли использоваться условие во вьюхе?
    #39997561
Фотография 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
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / будет ли использоваться условие во вьюхе?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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