Ребята, у меня есть следующий SQL-запрос оракула, который дает мне месячный отчет между датами. В основном, за ноябрь месяц я хочу сумму значений между датами от 01нов до 30 ноября.Запрашиваемая таблица находится в другой базе данных и доступна с использованием dblink.Столбцы DT имеют тип NUMBER (например, 20101201).
SELECT /*+ PARALLEL (A 8) */ /*+ DRIVING_STATE(A) */
TO_CHAR(TRUNC(TRUNC(SYSDATE,'MM')- 1,'MM'),'MONYYYY') "MONTH",
TYPE AS "TYPE", COLUMN, COUNT (DISTINCT A) AS "A_COUNT",
COUNT (COLUMN) AS NO_OF_COLS, SUM (DURATION) AS "SUM_DURATION",
SUM (COST) AS "COST" FROM **A@LN_PROD A**
WHERE DT >= TO_NUMBER(TO_CHAR(add_months(SYSDATE,-1),'YYYYMM"01"'))
AND DT < TO_NUMBER(TO_CHAR(SYSDATE,'YYYYMM"01"'))
GROUP BY TYPE, COLUMN
Выполнение запроса занимает один день и не завершено.любезно предложите мне, если это какая-либо оптимизация, которая может быть предложена моему администратору базы данных по ссылке dblink, или любая настройка, которая может быть выполнена по запросу, или переписать то же самое.1007 *
Таблица разделена на столбцы даты и почти 1 миллиард записей.
Ниже я дал ОБЪЯСНИТЬ ПЛАН из TOAD
**Plan**
SELECT STATEMENT REMOTE ALL_ROWSCost: 1,208,299 Bytes: 34,760 Cardinality: 790
12 PX COORDINATOR
11 PX SEND QC (RANDOM) SYS.:TQ10002 Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
10 SORT GROUP BY Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
9 PX RECEIVE Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
8 PX SEND HASH SYS.:TQ10001 Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
7 SORT GROUP BY Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
6 PX RECEIVE Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
5 PX SEND HASH SYS.:TQ10000 Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
4 SORT GROUP BY Cost: 1,208,299 Bytes: 34,760 Cardinality: 790
3 FILTER
2 PX BLOCK ITERATOR Cost: 1,203,067 Bytes: 15,066,833,144 Cardinality: 342,428,026 Partition #: 11 Partitions accessed #1 - #5
1 TABLE ACCESS FULL TABLE CDRR.FRD_CDF_DATA_INTL_IN_P Cost: 1,203,067 Bytes: 15,066,833,144 Cardinality: 342,428,026 Partition #: 11
Следующие вещи, которые я собираюсь сделать сегодня, будут полезны любые дополнительные советы.
- Я собираюсь собрать статистические данные для этоготаблица, которая может дать оптимальный план выполнения.
- Проверьте, создан ли локальный индекс для раздела.
- , используя BETWEEN вместо> = и <. </li>