Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Выборка из нескольких партиций


Автор: Gorlum 7.9.2007, 17:22
Второй день ломаю голову на тему как сделать селект из нескольких партиций. В мане написано, что для того, чтобы выбрать данные из нескольких партиций нада накладывать условия на индекс, по которому они разделяются.... но!
Например если я пишу:
Код

select count(*) from table01 partition (P01)


то подсчетзанимает 4 сек, если я напишу:
Код

select count (*) from table01 where idx > 2 (в таблице значения idx принимают значения только 1,2,3)


то выборка занимает 20 сек.

Задача стоит, подсчитать записи для каждого индекса, то есть
Код

select idx, count(*) from table01 where idx => 1 group by idx order by idx


Выполняется минуту (долго, нудно)
Внимание вопрос: как синтаксически оформить такой запрос при помощи указания партиций?
Пример:
Код

select idx, count(*) from table01 partition(P01, P02, P03) group by idx order by idx
 ........ или что-то в этом роде

ps oracle 9

Автор: DimW 10.9.2007, 07:19
я так понимаю партиции зазбиты по этому "idx" признаку?!
а так сколько выполняется:
Код

select count (*) from table01 where idx = 1



Цитата(Gorlum @  7.9.2007,  17:22 Найти цитируемый пост)
как синтаксически оформить такой запрос при помощи указания партиций?

в партициях не селен, но могу предположить что так:

Код

select idx, count(idx)
from 
(
select idx from table01 partition (P01)
union
select idx from table01 partition (P02)
union
select  idx from table01 partition (P03)
)
group by idx
order by idx

Автор: Filatov NA 12.10.2007, 19:32
Цитата(Gorlum @  7.9.2007,  15:22 Найти цитируемый пост)
Внимание вопрос: как синтаксически оформить такой запрос при помощи указания партиций?


Вероятнее всего вы что-то напутали при создании самой партиции, а точнее с условиями ее создания.
Укажите, пожалуйста, код и цель создания партиции.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)