1
我创建了一个实现的COUNT(*)
操作的更快的替代方案SQL函数:行数函数总是返回NULL
create function fast_row_count (@table_name varchar)
returns bigint
as
begin
declare @row_count int;
set @row_count =
(select sum(row_count) from sys.dm_db_partition_stats with (nolock) where object_id = object_id(@table_name));
return @row_count
end
go
执行时,它总是返回NULL值。
select dbo.fast_row_count('tbl_calls')
然而,作为一个单独的批次中的硬编码值执行时,它工作正常:
declare @row_count int;
set @row_count =
(select sum(row_count) from sys.dm_db_partition_stats with (nolock) where object_id = object_id('tbl_calls'));
print @row_count
'varchar'没有长度?这是一个禁忌。尝试'SYSNAME'。 – 2015-02-24 09:31:41
'varchar'没有长度就是'varchar(1)'。你的表名可能不适合一个字符,是吗? – Luaan 2015-02-24 09:32:38
[不良习惯踢:声明VARCHAR没有(长度)](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length .aspx) – GarethD 2015-02-24 09:36:11