webForumDet fria alternativet

Views och Identity

4 svar · 424 visningar · startad av Troxy

TroxyMedlem sedan mars 20041 505 inlägg
#1

Hej, använder SQL Server 2000.
Jag har precis hittat funktionen Views, som är väldigt smidig.
Går mycket snabbare än att använda temporära tabeller.

Men nu undrar jag om det går att få in en ny Identity-kollumn i min View.
Jag vill alltså att alla rader som returneras i min View ska få ett unikt nummer.
När man använder temporära tabeller så kan man ju använda IDENTITY() för att få in en ny kollumn med ett unikt nummer per post.
Finns det något liknande för Views?

Tacksam för svar :)

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag tror inte du kan göra det på något "enkelt" sätt i SQL Server 2000. I 2005:an kan du göra typ så här i en vy:

select rownumber() over (order by ditt_sorteringsfält) as myID, 
* from annan_tabell
emissionMedlem sedan dec. 19996 721 inlägg
#3
SELECT count(*) as idnummer,t1.kolumn1,t1.kolumn2 FROM tabell t1
INNER JOIN tabell t2 ON t2.uniksorteringskolumn>=t1.uniksorteringskolumn
GROUP BY t1.kolumn1,t1.kolumn2

Inte så effektivt, men i princip den enda lösningen. Om man måste använda dylika manövrar så bördet vara som en sista utväg (databas som man inte får röra), inte som en del av en arkitektur.

Vad var själva grundproblemet egentligen?

TroxyMedlem sedan mars 20041 505 inlägg
#4

Grundproblemet är väl att SQL Server 2000 är oförmögen att dela upp poster i flera sidor likt LIMIT i MySQL.
Jag tänkte att om varje post har ett ID så kan man använda "WHERE ID BETWEEN 100 AND 200" istället för TOP när man ställer frågan.
Men jag får köra vidare på andra mindre smidiga lösningar så länge.
Tack för hjälpen!

emissionMedlem sedan dec. 19996 721 inlägg
#5

Jag anade att det var paging det handlade om....ett av få tillfällen då det kan vara värt att använda sådana här tekniker. Jag föredrar dock att använda en temporärtabell (eller ännu hellre en tabellvariabel), och jag låter den endast innehålla räknaren (identity) och måltabellens primärnyckel. På så vis minimeras I/O- och minnesåtgång.

127 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)