Hämta rader i omvänd ordning (SQL Server)

Permalänk
Medlem

Hämta rader i omvänd ordning (SQL Server)

Hej,

Jag håller på att skapa en databasdriven applikation (som ska köras lokalt), och behöver hjälp med ett anrop.

Jag vill hämta de senaste x antal raderna från databasen. Typ som select top fast tvärtom. Jag har provat select top i kombination med order by desc (på primära nyckeln), men detta anrop tar flera sekunder (på en tabell med > 200 000 rader).

Finns det något sätt att läsa en tabell baklänges?

Detta är min första databasapplikation, så jag är enormt tacksam för all hjälp jag kan få!

Permalänk

"SELECT * FROM tbl ORDER BY id LIMIT x" skulle nog snabba upp det?

Det är dumt att hämta 200 000 rader när du bara vill ha X

Visa signatur

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Permalänk
Medlem

Exakt hur ser din SELECT-sats ut? Den borde ju använda indexet och då tycker jag inte att det ska flera sekunder på en tabell med bara några hundratusen rader.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

blomqvist: LIMIT finns inte i SQL server.

Phod:

Citat:

SELECT TOP (@size) *
FROM Log
ORDER BY ID DESC

Här är ID tabellens primary key (heltal med identity (auto increment))

Oavsett om jag hämtar 1000 eller 100 000 element så tar det mycket längre tid än om jag inte använder ORDER BY...

EDIT: Jag kom på en halvtaskig lösning, med WHERE BETWEEN MAX(ID)-X AND MAX(ID), sen köra ORDER efter det... Funkar iaf hyfsat.

Permalänk
Medlem

Och det finns ett index som består av bara kolumnen ID? För mig går det jättesnabbt om jag sorterar likadant på alla kolumner i ett index, t.ex:

SELECT TOP 10 * FROM tabell ORDER BY key_part1 DESC, key_part2 DESC, key_part3 DESC

Resulterar i en index scan med 10 rader i resultatet.

SELECT TOP 10 * FROM tabell ORDER BY key_part1 DESC, key_part2, key_part3 DESC

Resulterar i en index scan som omfattar alla rader i tabellen.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607