sql >> Databáze >  >> RDS >> Sqlserver

Proč je můj SQL Server ORDER BY pomalý, přestože je uspořádaný sloupec indexován?

Pokud váš dotaz do té doby nebude obsahovat objednávku, vrátí data v jakémkoli pořadí, v jakém byla nalezena. Neexistuje žádná záruka, že data budou vrácena ve stejném pořadí, když znovu spustíte dotaz.

Když zahrnete objednávku po klauzuli, dabatase musí vytvořit seznam řádků ve správném pořadí a poté vrátit data v tomto pořadí. To může vyžadovat spoustu dalšího zpracování, které se promítá do času navíc.

Seřazení velkého počtu sloupců, které může váš dotaz vracet, pravděpodobně trvá déle. V určitém okamžiku vám dojde vyrovnávací prostor a databáze se bude muset začít swapovat a výkon půjde z kopce.

Zkuste vrátit méně sloupců (místo Vybrat * zadejte sloupce, které potřebujete) a zjistěte, zda dotaz běží rychleji.



  1. CREATE VIEW určuje více názvů sloupců než sloupců

  2. Chybějící hodnota pro id primárního klíče Doctrine Symfony2

  3. Generovat data mezi časovými obdobími

  4. Přidejte data do databáze sqlite pouze jednou a čtěte vícekrát