Welcome to Sign in | Help

query-indexes in MSSQL 2005

  •  05-22-2009, 12:43 PM

    query-indexes in MSSQL 2005

    Salutare,

       In primul rand ma bucur ca exista un forum dedicat celor ce utilizeaza MSSQL-ul.

       Am o nelamurire cu privire la modul in care sunt utilizati indecsii in MSSQL si la modul cum se executa interogarile.

       Mai exact am un query de forma:

     

       select T1.col1, T2.col2 from

        Table1 T1 inner join Table T2 on T1.collegatura=T2.collegatura

                        inner join (select distinct col3 as legatura2 from T2) T3 on T3.legatura2=T1.collegatura2  

     Sper sa fie destul de explicit, interogarea initiala cuprinde un join intre 9 tabele dintre care 2 sunt foarte mari printre care cele 2 in cauza T1, T2.

      Ca o observatie "select distinct" in cele mai multe cazuri returneaza o inregistrare maxim 3 inregistrari.

      Daca rulez "select distinct" separat am un timp de cateva milisecunde, introdus in selectul mare produce o nebunie curata cateva minute de executie(avand in vedere ca imi trebuie mai putin de 10 secunde).

      Inlocuind "select distinct" cu o constanta ajung la un timp de 4 secunde.

     

      Intrebari:

      1.In selectul initial(join-uri) se executa "select distinct" pentru fiecare row.

      2. Daca am un index (care e cam degeba datorita selectivitatii reduse) pe col3 din T2 voi avea in in excution plan un idex scan + agregare, de ce nu merge pe index seek, avand in vedere ca, clauza de where este aceeasi coloana cat si selectul returneaza coloana din index?

     

    Multumesc

View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems