我有一个包含1.01亿条记录的表,该表中的一个简单Select(如Select count(*)
)执行大约需要7分钟。
有没有一种方法可以改善此表中的Select count(*)
查询?
我已经输入了身份字段和索引。我正在使用BCP导入。
有什么建议吗?
答案 0 :(得分:0)
行数准确地存储在分区统计信息系统表中。如果您只需要一个行计数,而不是数据中的其他信息,例如分组计数,那么您可以查询这些而不是对行本身进行计数。
它看起来像这样:
SELECT SUM (row_count)
FROM sys.dm_db_partition_stats
WHERE object_id=OBJECT_ID('dbo.MyTable')
AND (index_id=0 or index_id=1);
您甚至可以将其概括为同时提供多个表的计数:
SELECT
OBJECT_SCHEMA_NAME(object_id) AS TableSchema
,OBJECT_NAME(object_id) AS TableName
,SUM (row_count) AS Row_Count
FROM sys.dm_db_partition_stats
WHERE (index_id=0 or index_id=1)
GROUP BY object_id;