webForumDet fria alternativet

Paging med MSSQL

Databaser & SQL

2 svar · 245 visningar · startad av G8

Medlem sedan jan. 20011 213 inlägg
Frågan#1
stm = "SELECT tickets.id AS TID, tickets.datetime, tickets.username, tickets.priority, tickets.helptype, tickets.status, tickets.dateofstatuschange, "&_
      "tickets.reviewed, tickets.assignedto, status.descr, users.id, users.name, users.admin FROM tickets INNER JOIN status ON tickets.status = status.id INNER JOIN "&_
      "users ON users.id = tickets.assignedto WHERE status = '"&status&"' ORDER BY "&SORT&" "&ORDNING&""

I MySQL är det ju enkelt det här med paging, medans i MSSQL är det en aning mer komplicerat (om du frågar mig)

Har kollat runt här i forumet, hittar nått om rowcount men får inte till det.
Använde mig av exempelkod från http://www.aspfaq.com/show.asp?id=2120

Finns det något annat enkelt sätt att få till paging med MSSQL?

sidofråga: Nästa version av MSSQL kommer väl stödja LIMIT eller?

Medlem sedan dec. 19995 874 inlägg
#2

Jag skulle föreslå att du hämtar din data (dock begränsat till ett realistiskt antal) och cachar denna på servern (om du har möjlighet). Sedan utför du pagingen på servern. Då slipper du belasta databasen med ett nytt anrop för varje sidbyte.

Limit kommer inte i nästa version av mssql, det finns dock andra möjligheter så du kan uppnå likvärdigt resultat.

set rowcount anger antalet poster som skall returneras (liknande top (som jag visar nedan)).

Det som måste göras är att begränsa även vilka poster (vilken sida) man skall hämta just nu, exempel på detta nedan.

Första sidan.

declare @start int
set @start = 0
SELECT top 20 tickets.id FROM tickets WHERE ticketsId > @start

Andra sidan.
declare @start int
set @start= 20
SELECT top 20 tickets.id FROM tickets WHERE ticketsId > @start
Medlem sedan jan. 20011 213 inlägg
#3

Kan man inte göra en view eller stored procedure på servern och sedan kalla den varje gång man behöver den?

365 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
229 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)