---
title: "Paging med ROW_NUMBER() i SQL-Server"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/163066-paging-med-row-number-i-sql-server"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "inspiro"
published: "2007-07-31T13:59:00.000Z"
updated: "2007-07-31T13:59:00.000Z"
replies: 0
views: 356
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/163066-paging-med-row-number-i-sql-server"
---

# Paging med ROW_NUMBER() i SQL-Server

## #1 — inspiro, 2007-07-31T13:59Z

Hej! Håller på att bygga en "custom paging" i ett .net-projekt och provade att använda ROW_NUMBER() som ska vara en nyhet i sql-server 2005 om jag förstått det rätt. Det fungerar riktigt bra och verkar mycket enklare än att hålla på med temp-tabeller som de flesta verkar köra med (row_number skapar väl iofs en temporär tabell).

Tänkte bara höra om jag har gjort rätt och om jag får bra prestanda med den här metoden? Exempelvis gör jag två db-anrop (först kollar jag hur många träffar jag får med min sökning totalt), hämtar ned svaret i koden och gör ett nytt anrop där jag då kör row-number-funktionen. 

1) Går det att slå ihop dessa två anrop till en enda (jag måste dock få tag på det totala antalet rader eftersom jag använder den siffran i koden)?

2) Om jag har 10000 rader så hämtar ju den inre selectsatsen allihop... även om dessa aldrig returneras så måste de ju ändå ligga i minnet temporärt? Kan jag exempelvis bara hämta ut rätt id:n i den inre select-satsen och först när jag har hittat rätt poster så hämtar jag ut alla data (exempelvis med "IN" på nåt vis)?

```
// anrop 1:

SELECT COUNT(*) FROM Table 

// anrop 2:

@startRowIndex int,
@maximumRows int // skickas in från anrop 1!

SELECT OrderColumn, Name FROM         
  (SELECT Name, ROW_NUMBER() OVER (ORDER BY DateCreated DESC) AS OrderColumn FROM Table) AS MyTable
WHERE
  OrderColumn > @StartRowIndex AND
  OrderColumn <= (@StartRowIndex + @MaximumRows)
```

Permalänk: https://www.webforum.nu/p/163066

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/163066-paging-med-row-number-i-sql-server
