繁体   English   中英

如何从SQL Server 2012中的表的一个分区获取COUNT(*)?

[英]How to get COUNT(*) from one partition of a table in SQL Server 2012?

我的表有700万条记录,我根据ID分成14个部分,每个分区包含500万条记录,分区大小为40G。 我想运行一个查询来获取一个分区的计数,但它扫描所有分区,查询的时间变得非常大。

SELECT COUNT(*) 
FROM Item 
WHERE IsComplated = 0 
  AND ID Between 1 AND 5000000

如何在不扫描其他分区的情况下在一个分区上运行查询?

请参阅http://msdn.microsoft.com/en-us/library/ms188071.aspx

B.获取分区表或索引的每个非空分区中的行数以下示例返回包含数据的表TransactionHistory的每个分区中的行数。 TransactionHistory表使用分区函数TransactionRangePF1,并在TransactionDate列上进行分区。 要执行此示例,必须首先针对AdventureWorks2012示例数据库运行PartitionAW.sql脚本。 有关更多信息,请参阅PartitioningScript。

USE AdventureWorks2012;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition, 
COUNT(*) AS [COUNT] FROM Production.TransactionHistory 
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO

C.从分区表或索引的一个分区返回所有行以下示例返回表TransactionHistory的分区5中的所有行。 注意注意要执行此示例,必须首先针对AdventureWorks2012示例数据库运行PartitionAW.sql脚本。 有关更多信息,请参阅PartitioningScript。

SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM