SQL Query Pervious Row Optimization

Hier ist meine Tabellenstruktur

MyTable
-----------

ObjectID int (Identity),           -- Primary Key
FileName varchar(10),
CreatedDate datetime
...........
...........
...........

Ich muss die Zeit ermitteln, die zum Erstellen eines Datensatzes in einer Datei benötigt wird ... dh ... die Zeit, die zwischen dem vorherigen Datensatz in derselben Datei und dem aktuellen Datensatz derselben Datei verstrichen ist.

ie ... Wenn die Datensätze @ si

ObjectID    FileName    CreatedDate (just showing the time part here)
--------    --------    -----------
1           ABC         10:23
2           ABC         10:25
3           DEF         10:26
4           ABC         10:30
5           DEF         10:31
6           DEF         10:35

Die erforderliche Ausgabe ist ...

ObjectID    FileName    CreatedDate     PrevRowCreatedDate
--------    --------    ----------- ---------------
1           ABC         10:23           NULL
2           ABC         10:25           10:23
3           DEF         10:26           NULL
4           ABC         10:30           10:25
5           DEF         10:31           10:26
6           DEF         10:35           10:31

Bisher habe ich diese Abfrage erhalten, aber es dauert sehr lange als erwartet ... Gibt es einen besseren Weg, dies zu tun ...

    Select  A.ObjectID, 
        A.FileName
        A.CreatedDate as CreatedDate, 
        B.PrevRowCreatedDate,
        datediff("SS", '1900-01-01 00:00:00', Coalesce((A.CreatedDate - B.PrevRowCreatedDate),0)) as secondsTaken
    from MyTable as A 
        Cross Apply (       
        (Select PrevRowCreatedDate = Max(CreatedDate) from MyTable as BB 
                        where   BB.FileName = A.FileName and 
                                BB.CreatedDate < A.CreatedDate
        )
        ) as B  

Bitte lassen Sie es mich wissen, falls Sie weitere Informationen benötigen

Vielen Dan