怎么知道一行记录占用了多大的硬盘空间?
--> 用系统函数sys.dm_db_index_physical_stats()
参考http://technet.microsoft.com/zh-cn/library/ms188917(v=sql.105).aspx索引、主键这样怎么知道一共占用了多少?
--> use [数据库名]sp_spaceused '[表名]'
--> 用系统函数sys.dm_db_index_physical_stats()
参考http://technet.microsoft.com/zh-cn/library/ms188917(v=sql.105).aspx索引、主键这样怎么知道一共占用了多少?
--> use [数据库名]sp_spaceused '[表名]'
解决方案 »
- 数据库:create schema 与 create database区别?
- 如何恢复误删除SYSPWHD2的内容
- 问一个基础的问题
- 关于sp_addlogin
- 求一sql语句,按不同类型查询各部门的人数
- 在同一服务器下的跨不同数据库中的数据查询
- 请问有什么方法可以读出SQL Server 2000的跟踪文件.trc
- 用BCP怎么将数据保存在另一部机子?
- 用C++ Builder的TQuery读Access中的一个备注字段出错“Invalidate Blob ......”
- 同一个表里如何查出多个学生分数涨幅排序
- 在程序中使用SQL数据库,将数据插入时出现中断,盼大神指点
- SQL SERVER2010 EXPRESS连接到本地服务器问题
sp_spaceused '你的表'
go
--返回行数
select distinct rows
from sys.partitions
where object_id = object_id('你的表')然后 每一行的大小 = 空间大小/行数
--Buffer Pool的内存主要是由那个数据库占了?
SELECT COUNT(*) * 8 AS cached_pages_kb ,
CASE database_id
WHEN 32767 THEN 'ResourceDb'
ELSE DB_NAME(database_id)
END AS Database_name
FROM sys.dm_os_buffer_descriptors
GROUP BY DB_NAME(database_id) ,
database_id
ORDER BY cached_pages_kb DESC;
--当前数据库的哪个表或者索引占用Pool缓冲空间最多?
SELECT COUNT(*) * 8 AS cached_pages_kb ,
obj.name ,
obj.index_id ,
b.type_desc ,
b.name
FROM sys.dm_os_buffer_descriptors AS bd
INNER JOIN ( SELECT OBJECT_NAME(object_id) AS name ,
index_id ,
allocation_unit_id ,
object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p ON au.container_id = p.hobt_id
AND ( au.type = 1
OR au.type = 3
)
UNION ALL
SELECT OBJECT_NAME(object_id) AS name ,
index_id ,
allocation_unit_id ,
object_id
FROM sys.allocation_units AS au
INNER JOIN sys.partitions AS p ON au.container_id = p.partition_id
AND au.type = 2
) AS obj ON bd.allocation_unit_id = obj.allocation_unit_id
LEFT JOIN sys.indexes b ON b.object_id = obj.object_id
AND b.index_id = obj.index_id
WHERE database_id = DB_ID()
GROUP BY obj.name ,
obj.index_id ,
b.name ,
b.type_desc
ORDER BY cached_pages_kb DESC;