当select count 不加任何sql语句,会扫描全表,但如果能使用带索引的字段构成where 语句,就快了,可以把select count分段统计,然后再相加就行,比如下面的存储过程: create proc count_stuff as declare @a int declare @b int declare @c int declare @d char(10) begin select @a=count(*) from stuff where id_no='0' select @b=count(*) from stuff where id_no='1' end select @c=@a+@b select @d=convert(char(10),@c) print @d
select 主键 from table select @@rowcount as tablecounts
create proc count_stuff as
declare @a int
declare @b int
declare @c int
declare @d char(10)
begin
select @a=count(*) from stuff where id_no='0'
select @b=count(*) from stuff where id_no='1'
end
select @c=@a+@b
select @d=convert(char(10),@c)
print @d
select @@rowcount as tablecounts
显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。语法
sp_spaceused [[@objname =] 'objname']
[,[@updateusage =] 'updateusage']参数
[@objname =] 'objname'是为其请求空间使用信息(保留和已分配的空间)的表名。objname 的数据类型是 nvarchar(776),默认设置为 NULL。[@updateusage =] 'updateusage'表示应在数据库内(未指定 objname 时)还是在特定的对象上(指定 objname 时)运行 DBCC UPDATEUSAGE。值可以是 true 或 false。updateusage 的数据类型是 varchar(5),默认设置为 FALSE。返回代码值
0(成功)或 1(失败)结果集
如果省略 objname,则返回两个结果集。列名 数据类型 描述
database_name varchar(18) 当前数据库的名称。
database_size varchar(18) 当前数据库的大小。
unallocated space varchar(18) 数据库的未分配空间。 列名 数据类型 描述
reserved varchar(18) 保留的空间总量。
Data varchar(18) 数据使用的空间总量。
index_size varchar(18) 索引使用的空间。
Unused varchar(18) 未用的空间量。
如果指定参数,则返回下面的结果集。列名 数据类型 描述
Name nvarchar(20) 为其请求空间使用信息的表名。
Rows char(11) objname 表中现有的行数。
reserved varchar(18) 为 objname 表保留的空间总量。
Data varchar(18) objname 表中的数据所使用的空间量。
index_size varchar(18) objname 表中的索引所使用的空间量。
Unused varchar(18) objname 表中未用的空间量。
注释
sp_spaceused 计算数据和索引使用的磁盘空间量以及当前数据库中的表所使用的磁盘空间量。如果没有给定 objname,sp_spaceused 则报告整个当前数据库所使用的空间。当指定 updateusage 时,Microsoft® SQL Server™ 扫描数据库中的数据页,并就每个表使用的存储空间对 sysindexes 表作出任何必要的纠正。例如会出现这样一些情况:当除去索引后,表的 sysindexes 信息可能不是当前的。该进程在大表或数据库上可能要花一些时间运行。只有当怀疑所返回的值不正确,而且该进程对数据库中的其它用户或进程没有负面影响时,才应使用该进程。如果首选该进程,则可以单独运行 DBCC UPDATEUSAGE。权限
执行权限默认授予 public 角色。
返回受上一语句影响的行数。语法
@@ROWCOUNT返回类型
integer注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。示例
下面的示例执行 UPDATE 语句并用 @@ROWCOUNT 来检测是否有发生更改的行。UPDATE authors SET au_lname = 'Jones'
WHERE au_id = '999-888-7777'
IF @@ROWCOUNT = 0
print 'Warning: No rows were updated'