سلام
ما در SQL Server مبحثی به نام Partitioned Tables And Indexes داریم. که میاد جداول باداده های بزرگ روی چندین Filegroup به صورت پارتیشن پارتیشن ذخیره می کنه و هنگام اجرای کوئری فقط پارتیشن مربوطه رو لود می کنه. مثلاً اگه اطلاعات 10 سال مالی رو وارد کردید و دنبال اطلاعات سال 91 هستید فقط پارتیشن سال 91 رو می خونه چون شما در WHERE کوئری تون سال مالی رو 91 درخواست کردید.
شما ابتدا باید یک Partition Function بسازی تا و رنج سال ها رو بهش بدی مثلاً 1391 تا 1400.
این یک نمونه میلادی هست:
CREATE PARTITION FUNCTION [myDateRangePF1] (datetime) AS RANGE RIGHT FOR VALUES ('20030201', '20030301', '20030401',
'20030501', '20030601', '20030701',
'20030801', '20030901', '20031001', '20031101', '20031201');
بعد بیای یک Partition Scheme تعریف کنی و این رنج ها رو به یک یا چند Filegroup نسبت بدی. و بعد در هنگام ساخت جدول فیلد تاریخ رو به Partition Function نسبت بدی.
این روی چهار پارتیشن عمل می کنه:
CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg);
اعمال هنگام ایجاد جدول:
CREATE TABLE PartitionTable (col1 int, col2 char(10)) ON myRangePS1 (col1) ;
و البته میشه فقط در هنگام ساخت سال مالی جدید دوباره Partition Function رو دستکاری کرد. و حتی میشه با برنامه نویسی Filegroup ای به ازای هر سال مالی ساخت. و رنج یک سال رو به اون نسبت داد.
SQL Server این قدرت داره تا حتی پارتیشن ها رو هم با هم Join کنه!
فعلاً این لینک رو نگاه کن لینک فارسی رو بعداً اضافه می کنم:
http://msdn.microsoft.com/en-us/libr...ql.105%29.aspx