簡體   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