Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Odczyty nie spadają po umieszczeniu indeksu

Wybierasz 50 pierwszych wierszy uporządkowanych według e.uon desc . Indeks zaczynający się od uon przyspieszy zapytanie:

create index IX_Empl_Uon on dbo.empl (uon)

Indeks umożliwi programowi SQL Server przeskanowanie N górnych wierszy tego indeksu. N to najwyższa liczba w paginacji:dla trzeciej strony zawierającej 50 elementów N równa się 150. Następnie SQL Server przeprowadza 50 wyszukiwań kluczy w celu pobrania pełnych wierszy z indeksu klastrowego. O ile mi wiadomo, jest to podręcznikowy przykład tego, gdzie indeks może mieć duże znaczenie.

Nie wszystkie optymalizatory zapytań będą wystarczająco inteligentne, aby zauważyć, że row_number() over ... as rn z where rn between 1 and 50 oznacza górne 50 wierszy. Ale SQL Server 2012 to robi. Używa indeksu zarówno dla pierwszej, jak i kolejnych stron, np. row_number() between 50 and 99 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server sortuje ciąg znaków oddzielony przecinkami w jednej kolumnie

  2. Jak zmienić nazwę bazy danych w SQL Server — samouczek SQL Server / TSQL część 26

  3. Eksportuj bazę danych SQL Server do optymalizacji XML

  4. Rozmiar pola VARBINARY w SQL Server 2005

  5. Macierz obsługiwanych wersji SQL Server