欢迎投稿

今日深度:

sql查询表大小行数以及使用空间,sql查询表行数

sql查询表大小行数以及使用空间,sql查询表行数


DECLARE @D DATETIME
SET @D=GETDATE()

SET NOCOUNT ON 
EXEC SP_MSFOREACHTABLE 
@PRECOMMAND=N'
CREATE TABLE ##(
ID INT IDENTITY,
表名 SYSNAME,
字段数 INT,
记录数 INT,
保留空间 NVARCHAR(20),
使用空间 VARCHAR(20),
索引使用空间 VARCHAR(20),
未用空间 VARCHAR(20))',
@COMMAND1=N'INSERT ##(表名,记录数,保留空间,使用空间,索引使用空间,未用空间) EXEC SP_SPACEUSED ''?''
        UPDATE ## SET 字段数=(SELECT COUNT(*) FROM SYSCOLUMNS WHERE ID=OBJECT_ID(''?'')) WHERE ID=SCOPE_IDENTITY()',
@POSTCOMMAND=N'SELECT * FROM ## ORDER BY 记录数 DESC DROP TABLE ##'
SET NOCOUNT OFF 

SELECT [语句执行花费时间(毫秒)]=DATEDIFF(MS,@D,GETDATE())


SQL表查询最大行数

以下都是可以实现统计表中的行数
select count(*) from table1 这个包含空行和重复项
select count(disctinct 第一列) 这个消除重复项
 

SQLServer表的大小与表占硬盘空间大小有什不同,应该怎去查这两项性可以?

表的大小一般指表的行数,占用硬盘空间大小就比较复杂了,可以有以下几个参数:
分配空间,数据占用空间及索引占用空间。
执行
EXEC alltablecount
即可显示当前数据库所有表资源占用情况。

执行前,请前建立以下表,和两个存储过程:
1、先建立表:HY_SPACE
CREATE TABLE [HY_SPACE] (
[name] [nvarchar] (128) COLLATE Chinese_PRC_CI_AS NULL ,
[rows] [char] (11) COLLATE Chinese_PRC_CI_AS NULL ,
[reserved] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[data] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[index_size] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL ,
[unused] [varchar] (18) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2、建立统计存储过程:
create procedure HYspaceused
@objname nvarchar(776) = null,
@updateusage varchar(5) = false
as
declare @idint
declare @typecharacter(2)
declare@pagesint
declare @dbname sysname
declare @dbsize dec(15,0)
declare @logsize dec(15)
declare @bytesperpagedec(15,0)
declare @pagesperMBdec(15,0)
create table #spt_space
(
rowsint null,
reserveddec(15) null,
datadec(15) null,
indexpdec(15) null,
unuseddec(15) null
)
if @updateusage is not null
begin
select @updateusage=lower(@updateusage)
if @updateusage not in ('true','false')
begin
raiserror(15143,-1,-1,@updateusage)
return(1)
end
end
if @objname IS NOT NULL
begin
select @dbname = parsename(@objname, 3)
if @dbname is not null and @dbname <> db_name()
begin
raiserror(15250,-1,-1)
return (1)
end
if @dbname is null
select @dbname = db_name()
select @id = null
select @id = id, @type = xtype
from sysobjects
where id = object_id(@objname)
if @id is null
begin
raiserror(15009,-1,-1,@objname,@d......余下全文>>
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/3872.html NewsArticle sql查询表大小行数以及使用空间,sql查询表行数 DECLARE @D DATETIMESET @D=GETDATE()SET NOCOUNT ON EXEC SP_MSFOREACHTABLE @PRECOMMAND=NCREATE TABLE ##(ID INT IDENTITY,表名 SYSNAME,字段数 INT,记录数 INT,保留空间 NV...
相关文章
    暂无相关文章
评论暂时关闭