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
.