• Piling on, one of the fastest ways of doing this is to use Window Function with the appropriate POC index

    😎

    IF OBJECT_ID('tempdb..#tab1', 'U') IS NOT NULL

    DROP TABLE #tab1;

    CREATE TABLE #tab1

    (

    A INT

    ,B VARCHAR(10)

    ,C VARCHAR(10)

    ,D VARCHAR(10)

    ,E VARCHAR(10)

    );

    INSERT #tab1

    (A, B, C, D, E)

    VALUES (1, 'test', 'test0', 'test2', 'test3'),

    (1, 'test1', 'test1', 'test3', 'test4'),

    (1, 'test1', 'test2', 'test3', 'test5'),

    (1, 'test1', 'test3', 'test3', 'test4');

    CREATE NONCLUSTERED INDEX NCLIDX#tab1_A_B_D_E_INCL_C ON #tab1(A ASC, B ASC, D ASC, E ASC) INCLUDE (C);

    SELECT

    SD.A

    ,SD.B

    ,SD.C

    ,SD.D

    ,SD.E

    ,ROW_NUMBER() OVER

    (

    PARTITION BY SD.A

    ,SD.B

    ,SD.D

    ,SD.E

    ORDER BY SD.A

    )

    FROM #tab1 SD;