Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Les lectures ne deviennent pas faibles après avoir mis un index

Vous sélectionnez les 50 premières lignes classées par e.uon desc . Un index qui commence par uon accélérera la requête :

create index IX_Empl_Uon on dbo.empl (uon)

L'index permettra à SQL Server d'analyser les N premières lignes de cet index. N est le nombre le plus élevé de votre pagination :pour la 3e page de 50 éléments, N est égal à 150. SQL Server effectue ensuite 50 recherches de clé pour récupérer les lignes complètes de l'index clusterisé. Autant que je sache, c'est un exemple classique où un index peut faire une grande différence.

Tous les optimiseurs de requêtes ne seront pas assez intelligents pour remarquer que row_number() over ... as rn avec where rn between 1 and 50 désigne les 50 premières lignes. Mais SQL Server 2012 le fait. Il utilise l'index à la fois pour les premières pages et les pages consécutives, comme row_number() between 50 and 99 .