Bu SQL komut dosyasını (birisinden aldım, bir yerden aldım - nereden geldiğini yeniden yapılandıramıyor) yaşıyorum ve bu bana biraz anlayış ve dizin ve tabloların boyutunu belirleme konusunda yardımcı oldu:
SELECT
t.NAME AS TableName,
i.name as indexName,
sum(p.rows) as RowCounts,
sum(a.total_pages) as TotalPages,
sum(a.used_pages) as UsedPages,
sum(a.data_pages) as DataPages,
(sum(a.total_pages) * 8)/1024 as TotalSpaceMB,
(sum(a.used_pages) * 8)/1024 as UsedSpaceMB,
(sum(a.data_pages) * 8)/1024 as DataSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
WHERE
t.NAME NOT LIKE 'dt%' AND
i.OBJECT_ID > 255 AND
i.index_id <= 1
GROUP BY
t.NAME, i.object_id, i.index_id, i.name
ORDER BY
object_name(i.object_id)
Elbette, başka bir sıralama ölçütü kullanabilirsiniz.
ORDER BY SUM(p.rows) DESC
en satırlarla tabloları almak için, ya da
ORDER BY SUM(a.total_pages) DESC
kullanılan en sayfa (8K blok) ile tabloları almak için.
Mükemmel, teşekkürler! Şimdi, en büyük nesneyi, ikili veri satırlarından hangisinin en büyük olduğunu bulmak için çok fazla ikili veri içeren bir tabloya daralttım mı? Bunun için – jamesaharvey
, bu tablo üzerinde bir seçim yapmak ve ilgilendiğiniz her alan için DATALENGTH (alan) yazdırmak gerekir (genellikle VARCHAR (MAX), VARBINARY (MAX) ve benzeri) –
Mükemmel, teşekkürler tekrar! – jamesaharvey