sql >> Databasteknik >  >> RDS >> Sqlserver

Läsningen blir inte låg efter att ha satt ett index

Du väljer de 50 översta raderna sorterade efter e.uon desc . Ett index som börjar med uon kommer att påskynda frågan:

create index IX_Empl_Uon on dbo.empl (uon)

Indexet tillåter SQL Server att skanna de N översta raderna i detta index. N är det högsta numret i din sidnumrering:för den tredje sidan med 50 element är N lika med 150. SQL Server gör sedan 50 nyckeluppslagningar för att hämta de fullständiga raderna från det klustrade indexet. Så vitt jag vet är detta ett läroboksexempel på var ett register kan göra stor skillnad.

Alla frågeoptimerare kommer inte att vara smarta nog att lägga märke till att row_number() over ... as rn med where rn between 1 and 50 betyder de 50 översta raderna. Men det gör SQL Server 2012. Den använder index både för första och på varandra följande sidor, som row_number() between 50 and 99 .



  1. Formatera MySQL-kod inuti PHP-strängen

  2. Spring Boot Query-anteckning med nativeQuery fungerar inte i Postgresql

  3. Så här returnerar du insert-frågeresultatvärden med hjälp av pg-promise-hjälpare

  4. Vill skapa serienummer