我在下面写了一个查询,上面写了一个语法错误为什么要这样做,
SELECT MAX('Row') FROM
(SELECT ROW_NUMBER() OVER(ORDER BY ID DESC) 'Row' FROM USERS)Incorrect syntax near ')'.我不明白:
发布于 2011-07-14 07:41:33
发布于 2011-07-14 10:38:12
COUNT(*)就是它。ANSI标准 (查找"Scalar expressions 125")指出,COUNT(*)给出了表的行计数:从一开始就打算对其进行优化。如果指定了计数(*),则结果是T的基数。
如果您可以使用近似Server,那么请使用sys.dm_db_partition_stats。玛丽安的答案现在已经过时了,因为Server 2005增加了dmvs
SELECT
Total_Rows= SUM(st.row_count)
FROM
sys.dm_db_partition_stats st
WHERE
object_name(object_id) = 'Mytable' AND (index_id < 2)有关更多信息,请参见下面的内容:https://stackoverflow.com/questions/6069237/fastest-way-to-count-exact-number-of-rows-in-a-very-large-table/6069288#6069288
总之,有一种获取表中行数的有用方法。计数(*)
发布于 2011-07-14 09:01:34
还有另一个变体,不用扫描表,使用系统表:
Select si.RowCnt
from sys.objects so join sysindexes si on si.id = so.object_id
where so.type_desc = 'USER_TABLE'
and si.indid in (0,1) -- heap or clustered index
and so.Name in ('Users')比较计划,时间,时间..。你会发现它是一个更快的变体。
https://dba.stackexchange.com/questions/3849
复制相似问题