• After conversing with SanDroid, I have amended this query slightly so that the schema name and indid is displayed as well. Not all of you may need to see all of this detail. If so, just filter it out. Notice the sysusers join doesn't always match up sometimes.:-D

    SELECT

    sys.schemas.name as [Schema Name],

    sysusers.name as TABLE_USER,

    sysobjects.name as TABLE_NAME,

    sysindexes.rowcnt as ROWS,

    sysindexes.indid as [Index],

    sum(case when sysindexes.indid in (0, 1, 255) then convert(dec(15),reserved*8)else 0 end) as RESERVED_Kb,

    sum(case when sysindexes.indid < 2 THEN convert(dec(15),dpages*8) ELSE 0 END) +

    sum(case when sysindexes.indid = 255 THEN convert(dec(15),used*8) ELSE 0 END) AS DATA_Kb,

    (sum(case when sysindexes.indid in (0, 1, 255) then convert(dec(15),used*8) ELSE 0 END) -

    sum(case when sysindexes.indid < 2 THEN convert(dec(15),dpages*8) ELSE 0 END) -

    sum(case when sysindexes.indid = 255 THEN convert(dec(15),used*8) ELSE 0 END)) AS INDEX_SIZE_Kb,

    sum(case when sysindexes.indid in (0, 1, 255) then convert(dec(15),(reserved - used)*8) else 0 end) AS UNUSED_Kb

    FROM sysobjects (NOLOCK)

    INNER JOIN sysindexes (NOLOCK) ON sysobjects.id = sysindexes.id

    LEFT JOIN sysusers (NOLOCK) ON sysobjects.uid = sysusers.uid

    LEFT JOIN sys.schemas (NOLOCK) ON sysobjects.UID = sys.schemas.schema_id

    WHERE (sysobjects.type = 'U')

    AND (sysindexes.indid = 1)

    group by sys.schemas.name,sysusers.name, sysobjects.name,sysindexes.rowcnt,sysindexes.indid

    ORDER BY ROWS DESC, [SCHEMA NAME],TABLE_NAME

    GO

    "Technology is a weird thing. It brings you great gifts with one hand, and it stabs you in the back with the other. ...:-D"