| Version 2 (modified by , 3 weeks ago) ( diff ) |
|---|
Партиционирање
Партициски функции и шема
Поради тоа што encounters, medications, observations и procedures користат ист тип за колоната за датум - datetime2, тие може да користат иста функција - pf_Encounters_Year и иста партициска шема - ps_Encounters_Year.
Табелата conditions користи различен тип за датум - date, па за неа ќе се направи посебна партициска функција и шема.
pf_Encounters_Year и ps_Encounters_Year
Партициската функција - pf_Encounters_Year (datetime2) е креирана со boundaries: 2000, 2010, 2020, 2030.
Партициската шема ps_Encounters_Year ги мапира партициите на горните filegroups.
create partition function pf_Encounters_Year (datetime2)
as range right for values
(
'2000-01-01',
'2010-01-01',
'2020-01-01',
'2030-01-01'
);
go
create partition scheme ps_Encounters_Year
as partition pf_Encounters_Year to
(
FG_Old,
FG_2000s,
FG_2010s,
FG_2020s,
FG_Future
);
go
range rightзначи дека граничната вредност припаѓа на десната (повисока) партиција.
pf_Conditions_Year и ps_Conditions_Year
create partition function pf_Conditions_Year (date)
as range right for values
(
'2000-01-01',
'2010-01-01',
'2020-01-01',
'2030-01-01'
);
go
create partition scheme ps_Conditions_Year
as partition pf_Conditions_Year to
(
FG_Old,
FG_2000s,
FG_2010s,
FG_2020s,
FG_Future
);
go
Clustered индекси со партиционирање
Партиционирањето реално се применува кога clustered индексот е креиран врз партициската шема.
Помалите табели како allergies и immunizations не се партиционирани затоа што се помали и не зависат од временски период.
encounters
create clustered index CI_Encounters_StartDate_Id on encounters(start, Id) with (drop_existing = off) on ps_Encounters_Year(start); go
observations
create clustered index CI_Observations_Date_Patient on observations([date], patient) with (drop_existing = off) on ps_Encounters_Year([date]); go
medications
create clustered index CI_Medications_Start on medications([start], patient) with (drop_existing = off) on ps_Encounters_Year([start]); go
procedures
create clustered index CI_Procedures_Start on procedures([start], patient) with(drop_existing = off) on ps_Encounters_Year([start]); go
conditions
create clustered index CI_Conditions_Start on conditions([start], patient) with (drop_existing = off) on ps_Conditions_Year([start]); go
