How can I identify all large tables that have no index?
I would use this query to find that out.  The rowcount for Non-Clustered is the sum of ALL non-clustered indexes on the table, but the heap/clustered count is accurate.

;WITH CTE_RowCount AS
    (
    SELECT S.[name] AS SchemaName
        , O.[name] AS ObjectName 
        , I.type_desc AS IndexType
        , SUM(P.[rows]) AS [RowCount]
    FROM sys.partitions AS P
        INNER JOIN sys.objects AS O ON O.object_id = P.object_id 
        INNER JOIN sys.schemas AS S ON S.schema_id = O.schema_id
        INNER JOIN sys.indexes AS I ON I.object_id = P.object_id AND I.index_id = P.index_id
    GROUP BY S.[name], O.[name], I.[type_desc]
    )
SELECT *
FROM CTE_RowCount AS R
    PIVOT (SUM(R.[RowCount]) FOR IndexType IN ([HEAP], [CLUSTERED], [NONCLUSTERED])) AS Pvt
WHERE COALESCE(Pvt.[HEAP], Pvt.[CLUSTERED]) &gt;= 10000
    --AND Pvt.[CLUSTERED] IS NULL -- Will only show if table is a HEAP
    --AND Pvt.[NONCLUSTERED] IS NULL --will only show if there are no non-clustered indexes.