(一).為范圍分區(qū)創(chuàng)建分區(qū)函數(shù) 范圍分區(qū)必須使用邊界條件進行定義。而且,即使通過 CHECK 約束對表進行了限制,也不能消除該范圍任一邊界的值。為了允許定期將數(shù)據(jù)移入該表,需要創(chuàng)建最后一個空分區(qū)。 在范圍分區(qū)中,首先定義邊界點:如果存在五個分區(qū),則定義四個邊界點值,并指定每個值是第一個分區(qū)的上邊界 (LEFT) 還是第二個分區(qū)的下邊界 (RIGHT)。根據(jù) LEFT 或 RIGHT 指定,始終有一個空分區(qū),因為該分區(qū)沒有明確定義的邊界點。 具體來講,如果分區(qū)函數(shù)的第一個值(或邊界條件)是 '20001001',則邊界分區(qū)中的值將是: 對于 LEFT 第一個分區(qū)是所有小于或等于 '20001001' 的數(shù)據(jù) 第二個分區(qū)是所有大于 '20001001' 的數(shù)據(jù) 對于 RIGHT 第一個分區(qū)是所有小于 '20001001' 的數(shù)據(jù) 第二個分區(qū)是所有大于或等于 '20001001' 數(shù)據(jù) 由于范圍分區(qū)可能在 datetime 數(shù)據(jù)中進行定義,因此必須了解其含義。使用 datetime 具有某種含義:即總是同時指定日期和時間。未定義時間值的日期表示時間部分為“0”的 12:00 A.M。如果將 LEFT 與此類數(shù)據(jù)結(jié)合使用,則日期為 10 月 1 日 12:00 A.M. 的數(shù)據(jù)將位于第一個分區(qū),而 10 月份的其他數(shù)據(jù)將位于第二個分區(qū)。從邏輯上講,最好將開始值與 RIGHT 結(jié)合使用,而將結(jié)束值與 LEFT 結(jié)合使用。下面的三個子句將創(chuàng)建邏輯上相同的分區(qū)結(jié)構(gòu): RANGE LEFT FOR VALUES ('20000930 23:59:59.997','20001231 23:59:59.997', '20010331 23:59:59.997', '20010630 23:59:59.997') 或 RANGE RIGHT FOR VALUES ('20001001 00:00:00.000', '20010101 00:00:00.000', '20010401 00:00:00.000', '20010701 00:00:00.000')或 RANGE RIGHT FOR VALUES ('20001001', '20010101', '20010401', '20010701')注意:此處使用 datetime 數(shù)據(jù)類型確實增加了一定的復雜性,但您需要確保設(shè)置正確的邊界情況。請注意使用 RIGHT 的簡單性,因為默認時間為 12:00:00.000 A.M。對于 LEFT,復雜性增加是因為 datetime 數(shù)據(jù)類型具有精度。必須選擇 23:59:59.997 的原因在于,datetime 數(shù)據(jù)無法保證毫秒級別的精度。相反,datetime 數(shù)據(jù)的精度在 3.33 毫秒內(nèi)。使用 23:59:59.999 這個確切的時間值是不行的,因為該值將被舍入到最接近的時間值,即第二天的 12:00:00.000 A.M。由于進行了這種舍入,將無法正確定義邊界。對于 datetime 數(shù)據(jù),必須對明確提供的毫秒值加倍小心。 注意:分區(qū)函數(shù)還允許將函數(shù)作為分區(qū)函數(shù)定義的一部分。您可以使用 DATEADD(ms,-3,'20010101'),而不是使用 '20001231 23:59:59.997' 明確定義時間。 要在四個活動分區(qū)(每個分區(qū)代表一個日歷季度)中存儲四分之一的 Orders 數(shù)據(jù),并創(chuàng)建第五個分區(qū)以備將來使用(還是作為占位符,用于在分區(qū)表中移入和移出數(shù)據(jù)),請將 LEFT 分區(qū)函數(shù)與以下四個邊界條件結(jié)合使用: CREATE PARTITION FUNCTION OrderDateRangePFN(datetime) AS RANGE LEFT FOR VALUES ('20000930 23:59:59.997', '20001231 23:59:59.997', '20010331 23:59:59.997', '20010630 23:59:59.997') 記住,定義四個邊界點將創(chuàng)建五個分區(qū)。通過查看以下數(shù)據(jù)集檢查此分區(qū)創(chuàng)建的數(shù)據(jù)集: 邊界點 '20000930 23:59:59.997' 作為 LEFT(設(shè)置模式): 最左側(cè)的分區(qū)將包含所有小于或等于 '20000930 23:59:59.997' 的值 邊界點 '20001231 23:59:59.997': 第二個分區(qū)將包含所有大于 '20000930 23:59:59.997' 但小于或等于 '20001231 23:59:59.997' 的值 邊界點 '20010331 23:59:59.997': 第三個分區(qū)將包含所有大于 '20001231 23:59:59.997' 但小于或等于 '20010331 23:59:59.997' 的值 邊界點 '20010630 23:59:59.997': 第四個分區(qū)將包含所有大于 '20010331 23:59:59.997' 但小于或等于 '20010630 23:59:59.997' 的值 最后,第五個分區(qū)將包含所有大于 '20010630 23:59:59.997' 的值。 |
|