У меня есть таблица, диапазон которой разделен на числовое значение (parameterinstanceid). Я хочу выбрать максимальное + 1 значение одного и того же столбца. У меня есть глобальный индекс без разделов для параметра instanceid.
select /*+ parallel(a,32,8) */ max(parameterinstanceid) +1 from parameterinstance a;
При проверке плана объяснения я вижу, что он выполняет ПОЛНОЕ СКАНИРОВАНИЕ ИНДЕКСА (МИН./МАКС.) таблицы. я хочу сделать это, сначала проверив максимальный раздел, если он не содержит никаких данных, затем следующий раздел в порядке убывания. Я могу написать процедуру для этого, но я хочу знать, есть ли простой запрос для него. http://www.oramoss.com/blog/2009/06/no-pruning-for-minmax-of-partition-key.html .. кажется, что это нерешенная проблема.
РЕДАКТИРОВАТЬ :
Имена разделов: PI_P01,PI_P02,...PI_P10,PI_PMAXVALUE.
объяснить план:
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 2808487136
-----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 8 | 34 (0)| 00:00:01 | | |
| 1 | SORT AGGREGATE | | 1 | 8 | | | | |
| 2 | PARTITION RANGE ALL | | 1 | 8 | 34 (0)| 00:00:01 | 1 | 11 |
| 3 | INDEX FULL SCAN (MIN/MAX)| PI_PK | 1 | 8 | 34 (0)| 00:00:01 | 1 | 11 |
-----------------------------------------------------------------------------------------------------
и структура таблицы:
Name Null? Type
------------------------------ -------- -----------------
PARAMETERINSTANCEID NOT NULL NUMBER
PARAMINSTANCE2PARAMSETVERSION NOT NULL NUMBER
PARAMINSTANCE2PARAMDEFINITION NOT NULL NUMBER
PARAMINSTANCE2PARENTPARAM NUMBER
SEQUENCE NUMBER
X_CTCV_CONV_ID VARCHAR2(50 CHAR)
X_CONV_RUN_NO NUMBER
и индексы в таблице:
INDEX_NAME POSITION COLUMN_NAME
------------------------------ -------- -----------------------------
PI_UK 1 PARAMINSTANCE2PARAMSETVERSION
PI_UK 2 PARAMINSTANCE2PARAMDEFINITION
PI_PK 1 PARAMETERINSTANCEID
PI_PAD_FK_I 1 PARAMINSTANCE2PARAMDEFINITION
PI_PI_FK_I 1 PARAMINSTANCE2PARENTPARAM