SaxnPaule
Fleet Admiral
- Registriert
- Okt. 2010
- Beiträge
- 11.856
Hallo Community,
ich bin gerade dabei ein DB Query zusammenzustellen und habe einige Bedenken hinsichtlich der Performance.
Perspektivisch werden ca. 1 Mio. Datensätze in der Tabelle (MS SQL 2014) erwartet.
Ich benötige jetzt eine Query, die mir immer die X neusten Einträge einer bestimmten id ermittelt.
Hierfür habe ich jetzt die beiden Variante:
Wisst ihr, welche Variante performanter ist? Seht ihr generell eine Variante die Abfrage besser zu gestalten?
ich bin gerade dabei ein DB Query zusammenzustellen und habe einige Bedenken hinsichtlich der Performance.
Perspektivisch werden ca. 1 Mio. Datensätze in der Tabelle (MS SQL 2014) erwartet.
Ich benötige jetzt eine Query, die mir immer die X neusten Einträge einer bestimmten id ermittelt.
Hierfür habe ich jetzt die beiden Variante:
Code:
SELECT * FROM (SELECT * FROM table WHERE contentid = '"id1"' ORDER BY creationdate DESC OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY) bla
UNION
SELECT * FROM (SELECT * FROM table WHERE contentid = '"id2"' ORDER BY creationdate DESC OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY) bla
UNION
SELECT * FROM (SELECT * FROM table WHERE contentid = '"id3"' ORDER BY creationdate DESC OFFSET 0 ROWS FETCH NEXT 3 ROWS ONLY) bla
UNION
. . .
Code:
SELECT * FROM (SELECT TOP 3 * FROM table WHERE contentid = '"id1"' ORDER BY creationdate DESC) bla
UNION
SELECT * FROM (SELECT TOP 3 * FROM table WHERE contentid = '"id2"' ORDER BY creationdate DESC) bla
UNION
SELECT * FROM (SELECT TOP 3 * FROM table WHERE contentid = '"id3"' ORDER BY creationdate DESC) bla
UNION
. . .
Wisst ihr, welche Variante performanter ist? Seht ihr generell eine Variante die Abfrage besser zu gestalten?