|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Добрый день! Хочу разбить таблицу P_TABLE на партиции по колонке p_type. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
Имеется запрос (формируется приложением, изменить нет возможности) Код: plsql 1. 2. 3.
При выполнении запроса сканируются все партиции (PARTITION LIST ALL). Если убрать функцию UPPER, то всё работает отлично (сканируется только одна партиция). Каким образом нужно выполнить разбиение таблицы, чтобы при таких запросах сканировалась, только соответствующая партиция? Или такой возможности нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 14:42 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Если есть уверенность, что p_type всегда в верхнем регистре, можно добавить ограничение CHECK (P_TYPE=UPPER(P_TYPE)) Скорее всего, тогда и partition pruning отработает ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 14:46 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровСкорее всего, тогда и partition pruning отработает Эт врядли... (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 14:56 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 15:00 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Sergalin, Как вариант - через виртуальную колонку (11.1+) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 15:03 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Вячеслав ЛюбомудровЕсли есть уверенность, что p_type всегда в верхнем регистре, можно добавить ограничение CHECK (P_TYPE=UPPER(P_TYPE)) Скорее всего, тогда и partition pruning отработает В таблице p_type находится и в верхнем и нижнем регистре. Запрос конечно от разработчика странный, но приходится с ним жить ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 15:40 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
Спасибо! Отлично работает с виртуальной колонкой ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 16:16 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
SergalinВ таблице p_type находится и в верхнем и нижнем регистре. Тогда ты чего-о недоговариваешь: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Так-что у тебя или партиция с VALUES(DEFAULT) или для таблицы задан SET PARTITIONING AUTOMATIC. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2019, 21:53 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
SY, Добрый день! Да Вы правы немного не договорил )). Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
p_type может содержать строки вида: Type1, TyPe1, TYPE1 и т.д., но это один и тот же тип ))). Есть ещё партиция DEFAULT. Мною была приведена таблица в качестве примера, интересовал подход к реализации секционирования для моего случая. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 08:50 |
|
Partitioned table и использование функций в запросе
|
|||
---|---|---|---|
#18+
andrey_anonymousВячеслав ЛюбомудровСкорее всего, тогда и partition pruning отработает Эт врядли... (с)Да, к сожалению, не срабатывает Была надежда, что будет что-то подобное transitive closure (правда на первых порах оптимизатор сувал его куда не попадя и бывало, что ухудшал запрос) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2019, 10:16 |
|
|
start [/forum/topic.php?fid=52&fpage=80&tid=1882637]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 305ms |
total: | 439ms |
0 / 0 |