查询花费的时间太长,无法在SQL Server中执行

时间:2019-11-12 11:55:12

标签: sql-server

我有一个包含1.01亿条记录的表,该表中的一个简单Select(如Select count(*))执行大约需要7分钟。

有没有一种方法可以改善此表中的Select count(*)查询?

我已经输入了身份字段和索引。我正在使用BCP导入。

有什么建议吗?

1 个答案:

答案 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;