• Here is another thing i found and modified a little.

    Takes under a second for 1 millon rows and returns gaps size sorted 😉

    Change tables and fields surrounded by []

    ----------------------------------------

    SELECT

    LastSysId + 1 AS GapFrom,

    NextSysId - 1 AS GapTo,

    NextSysId - (LastSysId + 1) AS GapSize

    FROM

    (

    SELECT

    (

    SELECT TOP 1

    [SysId]

    FROM

    [yourtable]

    WHERE

    [SysId] < a.[SysId]

    ORDER BY

    [SysId] DESC

    ) AS LastSysId,

    a.[SysId] AS NextSysId

    FROM

    [yourtable] AS a

    LEFT JOIN

    [yourtable] AS b ON a.[SysId] = b.[SysId] + 1

    WHERE

    b.[SysId] IS NULL

    ) AS a

    WHERE

    LastSysId IS NOT NULL

    ORDER BY

    3 DESC