book - Paging efficace avec de grandes tables en SQL 2008



sql-server performance (1)

Nous utilisons row_number() avec beaucoup d'effet et il n'y a pas vraiment eu de problèmes de performance. La structure de base de nos requêtes paginées ressemble à ceci:

WITH result_set AS (
  SELECT
    ROW_NUMBER() OVER (ORDER BY <ordering>) AS [row_number],
    x, y, z
  FROM
    table
  WHERE
    <search-clauses>
) SELECT
  *
FROM
  result_set
WHERE
  [row_number] BETWEEN a AND b

Cela fonctionne très bien pour nous sur les tables de plus de 1 000 000 lignes.

pour les tables avec plus de 1 000 000 lignes et peut-être beaucoup plus!

Je n'ai pas fait d'analyse comparative moi-même si je voulais obtenir l'avis des experts.

Regardé quelques articles sur row_number () mais il semble avoir des implications de performance

Quels sont les autres choix / alternatives?





paging