Как получить COUNT(*) из одного раздела таблицы в SQL Server 2012?

В моей таблице 7 миллионов записей, и я делю таблицу на 14 частей в соответствии с ID, каждый раздел включает 5 миллионов записей, а размер раздела составляет 40G. Я хочу выполнить запрос, чтобы получить счет в одном разделе, но он сканирует все разделы, и время запроса становится очень большим.

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

Как я могу выполнить мой запрос только на одном разделе без проверки другого раздела?

1 ответ

Решение

См. http://msdn.microsoft.com/en-us/library/ms188071.aspx

Б. Получение количества строк в каждом непустом разделе многораздельной таблицы или индекса В следующем примере возвращается количество строк в каждом разделе таблицы TransactionHistory, содержащей данные. Таблица TransactionHistory использует функцию секционирования TransactionRangePF1 и секционируется в столбце TransactionDate. Чтобы выполнить этот пример, вы должны сначала запустить скрипт PartitionAW.sql для образца базы данных AdventureWorks2012. Для получения дополнительной информации см. 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. Возвращение всех строк из одного раздела многораздельной таблицы или индекса В следующем примере возвращаются все строки из раздела 5 таблицы TransactionHistory. Примечание Примечание Чтобы выполнить этот пример, сначала необходимо запустить сценарий PartitionAW.sql для образца базы данных AdventureWorks2012. Для получения дополнительной информации см. PartitioningScript.

SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;
Другие вопросы по тегам