Na to jak urychlit takovýto select, znám pouze 2 způsoby.
1 . Vytvořit agregační tabulku, která se bude plnit v triggerch a sumovat to v ní jak potřebuji 2. Vytvořit index, který bude obsahovat sloupec co sumuji a zároveň všechyn sloupce dle kterých vybírám nebo groupuji. Potom se použije index scan a ne ful table scan. Index scan je rychlejší, (předpokládám že sloupců v indexu je MNOHEM méně než sloupců v tabulce, jinak to nemá smysl => je menší než tabulka a jeho scan je proto rychlejší) Indexem samozřejmě zvětšíte objem databáze + přidáte nějakou režii na jeho aktualizaci při každé změně. Použitím triggeru vytvářejícího agregaci nad base tabulkuu zase snižujete propustnot víceuživatelské změny dat v base tabulce, ale objem dat v agregaci bude výrazně menší než objem indexu.

Takže rozhodnout to musíte sám.

Radek

Dobry den,

Chtel bych se zeptat, jestli neexistuje najakym RYCHLY zpusobem
(tuning), jak ziskat pomoci SQL SUM, Sumu z tabluky citajici pres 30mil
zaznamu.

Jinimy slovy: zabranit pokazde full-table-scan.

PS: Pouziti funkcniho indexu neni mozne, kvuli agregacni funkci SUM.
Opravte me, jestli se mylim.

Dekuji
Robert Vilhelm

Zadani:

Pouzivam Oracle 9.2i

CREATE TABLE tabulka(
        id NUMBER(18) NOT NULL,
        sloupec NUMBER(18) NOT NULL,
        CONSTRAINT tabulka_pk
PRIMARY KEY ( id ) );

"tabulka" ma pres 30mil zaznamu

SELECT SUM(sloupec)
FROM  sloupec;


__________________________________________________________________
Kreditwerk Hypotheken-Management GmbH
Janderstraße 7-8
D-68199 Mannheim
Tel. + 49 (621) 87557-0
Fax: +49 (621) 87557-111

Geschäftsführer:
  Beate Stollenwerk
Bernd Meier Manfred Lund Sitz der Gesellschaft: Handelsregister:
  Mannheim                           Amtsgericht Mannheim HRB 8345
http://www.hypotheken-management.com Als Inkassobüro zugelassen
__________________________________________________________________




Odpovedet emailem