在創建完分區表后,可以向分區表中直接插入數據,而不用去管它這些數據放在哪個物理上的數據表中。接上篇文章,我們在創建好的分區表中插入幾條數據:
"50" rows="15" name="code" class="c-sharp">insert Sale ([Name],[SaleTime]) values ('張三','2009-1-1')
insert Sale ([Name],[SaleTime]) values ('李四','2009-2-1')
insert Sale ([Name],[SaleTime]) values ('王五','2009-3-1')
insert Sale ([Name],[SaleTime]) values ('錢六','2010-4-1')
insert Sale ([Name],[SaleTime]) values ('趙七','2010-5-1')
insert Sale ([Name],[SaleTime]) values ('張三','2011-6-1')
insert Sale ([Name],[SaleTime]) values ('李四','2011-7-1')
insert Sale ([Name],[SaleTime]) values (
insert Sale ([Name],[SaleTime]) values ('錢六','2012-9-1')
insert Sale ([Name],[SaleTime]) values ('趙七','2012-10-1')
insert Sale ([Name],[SaleTime]) values ('張三','2012-11-1')
insert Sale ([Name],[SaleTime]) values ('李四','2013-12-1')
insert Sale ([Name],[SaleTime]) values ('王五','2014-12-1')
從以上代碼中可以看出,我們一共在數據表中插入了13條數據,其中第1至3條數據是插入到第1個物理分區表中的;第4、5條數據是插入到第2個物理分區表中的;第6至8條數據是插入到第3個物理分區表中的;第9至11條數據是插入到第4個物理分區表中的;第12、13條數據是插入到第5個物理分區表中的。
從SQL語句中可以看出,在向分區表中插入數據方法和在普遍表中插入數據的方法是完全相同的,對于程序員而言,不需要去理會這13條記錄研究放在哪個數據表中。當然,在查詢數據時,也可以不用理會數據到底是存放在哪個物理上的數據表中。如使用以下SQL語句進行查詢:
[c-sharp] view plaincopy select * from Sale
查詢的結果如下圖所示:
從上面兩個步驟中,根本就感覺不到數據是分別存放在幾個不同的物理表中,因為在邏輯上,這些數據都屬于同一個數據表。如果你非想知道哪條記錄是放在哪個物理上的分區表中,那么就必須使用到$PARTITION函數,這個函數的可以調用分區函數,并返回數據所在物理分區的編號。
說起來有點難懂,不過用起來很簡單。$PARTITION的語法是:
$PARTITION.分區函數名(表達式)
假設,你想知道2010年10月1日的數據會放在哪個物理分區表中,你就可以使用以下語句來查看。
[c-sharp] view plaincopy select $PARTITION.partfunSale ('2010-10-1')
在以上語句中,partfunSale()為分區函數名,括號中的表達式必須是日期型的數據或可以隱式轉換成日期型的數據,如果要問我為什么,那么就回想一個怎么定義分區函數的吧(CREATE PARTITION FUNCTION partfunSale (datetime))。在定義partfunSale()函數時,指定了參數為日期型,所以括號中的表達式必須是日期型或可以隱式轉換成日期型的數據。以上代碼的運行結果如下圖所示:
新聞熱點
疑難解答