Ich habe diese Ansicht vMobileHistory_MobileRegion
das ist wie:SQL Server: Gruppieren kontinuierlichen Wert einer Spalte
strUnitID strDate strTime iMobileHistory isValidRegion
---------------------------------------------------------------
352848028160311 1394/11/01 10:35:16 33029937 0
352848028160311 1394/11/01 10:35:17 33029938 0
352848028160311 1394/11/01 10:35:18 33029939 1
352848028160311 1394/11/01 10:35:19 33029940 1
352848028160311 1394/11/01 10:35:20 33029941 1
352848028160311 1394/11/01 10:35:22 33029942 0
352848028160311 1394/11/01 10:35:25 33029943 0
352848028160311 1394/11/01 10:35:28 33029944 0
352848028160311 1394/11/01 10:35:34 33029945 1
352848028160311 1394/11/01 10:35:35 33029946 1
Indizes sind:
ClusterdIndex, strUnitID ASC, strDate DESC, strTime DESC
NonClusterdIndex, iMobileHistory ASC
NonClusterdIndex, strDate ASC, strTime ASC
NonClusterdIndex, strUnitID ASC, strDate ASC
Ich habe diese Abfrage, die kontinuierliche Werte zu Gruppenzeilen basiert "isValidRegion"
SELECT
strUnitID,
strDate,
strTime,
isValidRegion,
iMobileHistory,
(ROW_NUMBER() OVER (PARTITION BY strUnitId ORDER BY strDate, strTime)
-
ROW_NUMBER() OVER (PARTITION BY strUnitId, isValidRegion ORDER BY strDate, strTime)
) AS grp
FROM
vMobileHistory_MobileRegion
GROUP BY
strUnitID, strDate, isValidRegion, grp
Das Problem ist, dass vMobileHistory_MobileRegion
über 100M von Zeilen hat und mit ROW_NUMBER()
darauf verursacht Berechnung ROW_NUMBER()
für alle Zeilen, die wirklich langsam ist und verursacht Sortierung Daten in tempdb
wegen der großen Daten, die nicht in den Speicher passen.
Gibt es einen anderen Weg ohne ROW_NUMBER()
zu verwenden?
Eigentlich, ich brauche Zeitdauer für jeden kontinuierlichen Wert von isValidRegion
Was möchten Sie mit der Funktion rows_number berechnen? –
Dies ist die Differenz von RowNumber für zwei verschiedene Partitionierung zu berechnen, um zu wissen, ob "isValidRegion" kontinuierlich ist oder nicht –
Haben Sie irgendwelche Index (e)? Es ist nicht 'ROW_NUMBER()', was zu Hauptleistungsproblemen führt, das Sortieren von 100M-Datensätzen ist langsam. –