Как получить 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 ;