jam*_*vey 130 database sql-server
我如何在SQL Server数据库中查找最大的对象?首先,通过确定哪些表(和相关索引)最大,然后确定特定表中哪些行最大(我们将二进制数据存储在BLOB中)?
有没有什么工具可以帮助进行这种数据库分析?或者是否有一些我可以对系统表运行的简单查询?
mar*_*c_s 269
我一直在使用这个SQL脚本(我从某人那里得到,某个地方 - 无法重建它来自哪个人)多年来它帮助我理解并确定了索引和表格的大小:
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)
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用其他订购标准,例如
ORDER BY SUM(p.rows) DESC
Run Code Online (Sandbox Code Playgroud)
获取具有最多行的表,或
ORDER BY SUM(a.total_pages) DESC
Run Code Online (Sandbox Code Playgroud)
获取使用最多页面(8K块)的表格.
小智 68
在SQL Server 2008中,您还可以通过顶层表运行标准报告磁盘使用情况.右键单击数据库,选择"报告" - >"标准报告"并选择所需的报告即可找到此项.
此查询有助于找到连接中最大的表。
SELECT TOP 1 OBJECT_NAME(OBJECT_ID) TableName, st.row_count
FROM sys.dm_db_partition_stats st
WHERE index_id < 2
ORDER BY st.row_count DESC
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
141510 次 |
最近记录: |