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

Čtení po zadání indexu neklesají

Vybíráte prvních 50 řádků seřazených podle e.uon desc . Index, který začíná uon urychlí dotaz:

create index IX_Empl_Uon on dbo.empl (uon)

Index umožní serveru SQL Server skenovat horních N řádků tohoto indexu. N je nejvyšší číslo ve vašem stránkování:pro 3. stránku s 50 prvky se N rovná 150. SQL Server pak provede 50 vyhledávání klíčů, aby načetl celé řádky z seskupeného indexu. Pokud vím, toto je učebnicový příklad toho, kde může index přinést velký rozdíl.

Ne všechny optimalizátory dotazů budou dostatečně chytré, aby si všimli, že row_number() over ... as rn s where rn between 1 and 50 znamená horních 50 řádků. Ale SQL Server 2012 ano. Používá index pro první i následující stránky, například row_number() between 50 and 99 .



  1. Výběr ze stejné tabulky více než jednou ve stejném dotazu

  2. Jak používat FIND_IN_SET pomocí seznamu dat

  3. nepodařilo se importovat soubor kódovaný utf16 do mysql

  4. Použití pole DATE jako primárního klíče dimenze data s MySQL