Indexy & select

Vladimir Naprstek vladimir.naprstek na prodeco.cz
Pátek Září 22 13:09:03 CEST 2000


Jan Serak wrote:

> 1. Zkuste se podivat na exekucni plan. Ten ziskate tak, ze:

To jsem zkusil (diky, hned jsem si udelal velmi zvyraznenou poznamku), opravdu se
prochazi cele tabulky a nepouziji se klice...

> Nejste-li si jist, v jakem modu bude nastaven optimizer, staci dotaz ohintovat.
> Hint je specialni poznamka ve tvaru /*+ hint_1 hint_2 ... */
> a v danem pripade pro zapnuti rule-based modu je treba hint /*+ CHOOSE */

v explainu je Optimizer goal: CHOOSE...

> 3. Zakladni chyba, kterou jste udelal, ze pouzivate view prilis univerzalne.
> Pokud chcete zjistit pro daneho zamestnance seznam knih, ktere ma vypujceny,
> je nesmyslne k tomu zjistovat kategorie. A zase naopak, kdyz chcete seznam
> knih dane kategorie, nezajimaji Vas vypujcky. Takze moje rada od boku strelena:
> zruste ten view pres vsech 5 tabulek, nebo jej pouzivejte pouze pro dotazy,
> kdy jste schopen omezit knihy. Jinak se totiz nemuze uplatnit zadny vhodny
> index a proleza se sekvencne (ve vystupu z tkprofu zjistite, ze pristup
> k teto tabulce byl realizovan metodou FULL SCAN), coz bude hlavni pricina
> zpomaleni. V pripadech, kdy nejste schopen omezeni na hlavni tabulce zadat,
> vyrobte specialni select, napr.
>
>         select ... from kniha k,vypujcka v
>         where k.primary=v.kniha
>         and v.zamestnanec in (...);

Jedna se o www aplikaci, kde parametry si dodavaji uzivatele ve formulari. Proto
ten uzasny dotaz.
Pokusim se to tedy vymyslet jinak...
Potiz je hlavne v tom, ze zadani vyzaduje hledani typu column like 'neco'.. no
takze pokud uzivatel nezada zadne parametry nebo jen malo z nich, tak dotaz potom
vypada hruzne:
.... where column1 like '%' and column2 like '%' and....

kdyz si napisu dotaz rucne:
... where zamestnanec = 21; tak dotaz svisti jako hrom...

Pohraval jsem si i s myslenkou vytvorit dynamicky dotaz a pouzit execute
immediate, ale to nelze pouzit v pripade, ze vysledek je viceradkovy...

--
Vladimir Naprstek
e-mail vladimir.naprstek na prodeco.cz



Další informace o konferenci Databases