none
Optimalizace dotazu

    Obecná diskuse

  • Zdravím všechny. Prosím o rozsouzení tohoto "sporu". Na stroji MSSQL 20008 R2 mějme tabulku :

      CREATE TABLE dbo.TABLE (
      IDTABLE               Integer IDENTITY (1, 1) NOT NULL,
      DATA1                 Varchar(10),
      DATA2                 Varchar(10),    
      CONSTRAINT TABLE_PK PRIMARY KEY (IDTABLE)
      )
    
    

    A nyní dva dotazy :

    --první dotaz
    select @data = DATA1 from TABLE where IDTABLE=55555
    
    --druhý dotaz
    select top 1 @data = DATA1 from TABLE where IDTABLE=55555
    

    Který dotaz bude rychleji zpracován ?

    Děkuji.


    Ludan

    čtvrtek 14. června 2012 15:07

Všechny reakce

  • Dobrý den,

    a proč si myslíš, že je na to jednoznačná odpověď?


    JCH

    čtvrtek 14. června 2012 19:44
  • Šlo o přátelský spor s kolegou. Já tvrdím, že varianta s TOP 1 je u dotazu podle primárního jednoznačného klíče pomalejší kvůli tomu že je nutno rozparsovat o dvě slova více, kolega zastával názor že TOP 1 dotaz urychlí.  Ale asi opravdu nebude jednoznačná odpověď i když praktické pokusy ukazují, že pravda je zřejmě na mé straně. Nicméně jsem chtěl slyšet názory opravdových odborníků.

    Ludan

    čtvrtek 14. června 2012 23:23
  • Vseobecne je rychlost rovnaka. A to preto, lebo TOP X bez pouzitia ORDER BY vrati X nahodnych zaznamov z daneho selectu. A kedze dany stlpec IDTABLE je PRIMARY KEY, tak je unikatny, cize vzdy sa vrati len jeden zaznam.

    Takze IMHO rychlost je rovnaka a je zbytocne tam davat TOP X ak nepouzivas ORDER BY. Myslim, ze zbytocne zatazujete systemom vkladanim TOP X do dotazov, takze teoreticky to moze byt pomalsie o par milisekund.


    ---------- Ondrej Zilinec - Cievo ----------

    pondělí 2. července 2012 20:18