Posted By: vejpuste (Libor Vejpustek) on 'CZdatabases' Title: Re: Ad: Zajimavost Date: Thu Sep 12 09:10:36 2002 > Ahoj. > > Select count(*) from a where exists > select ... where IN(select) > > Ano, to jsou naprosto funkcni reseni, ale kdyz mate tabulky s miliony > zaznamu, tak IN je pomaly jak svine (prominte to slovo) a exists je > sice lepsi, ale take to neni ono. Samozrejme. Hlavni je, jestli je na druhe tabulce, ktera se prochazi exist spravne udelanej a pouzivanej index. Pro kazdy radek z 1 tabulky se totiz musi provest select ve druhe. Kdyz se pouzije in, tak se vytvori pomocna tabulka se seznamem ID, kterou pak prochazi a zjistuje, jestli je v seznamu. To vse tolikrat, kolik je radek v prvni tabulce. Kdyz se pouzije exist, tak mu staci zjistit, jestli to vratilo alespon jeden radek. Proto se doporucuje pouzit ve vnorenem selectu select 'X' from. To totiz uplne staci a pokud je rozumne udelanej index, tak staci projit index a nemusi sahat do dat tabulky. Pri spravnem nastaveni by zrychleni melo byt extremni. Libor Vejpustek Ceska zemedelska univerzita Praha http://web.czu.cz/~vejpuste/ E-mail : vejpuste@uvt.czu.cz