Мне нужно проиндексировать и разделить огромную, но простую таблицу (127 миллионов строк), чтобы ускорить выполнение запросов, используя SQL Server Management Studio. Он имеет 99 блоков ежемесячных данных, каждый месяц имеет целое число от 1 до 99. Я хочу разбить каждый месяц на каждый раздел и индексировать по столбцам [ID]
и [Month]
, так как мне нужно запросить таблицу для сравнения каждого месяца до предыдущего [Month]
и каждого отдельного [ID]
. Как мне это сделать? Я создал функцию разделения
CREATE PARTITION FUNCTION PF_Monthly(int)
AS RANGE RIGHT FOR VALUES (
1,2,3,4,5,6,7,8,9,10
,11,12,13,14,15,16,17,18,19,20
,21,22,23,24,25,26,27,28,29,30
,31,32,33,34,35,36,37,38,39,40
,41,42,43,44,45,46,47,48,49,50
,51,52,53,54,55,56,57,58,59,60
,61,62,63,64,65,66,67,68,69,70
,71,72,73,74,75,76,77,78,79,80
,81,82,83,84,85,86,87,88,89,90
,91,92,93,94,95,96,97,98,99
)
GO
и схему:
CREATE PARTITION SCHEME PS_Monthly
AS PARTITION PF_Monthly
ALL TO ( [PRIMARY] );
GO
Как мне применить это к таблице с именем [Table]
и ее столбцу с именем [Month]
? Могу ли я сделать это после индексации или мне нужно заново создать таблицу, затем разбить на разделы, а затем индексировать? Спасибо