程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

分區技巧

編輯:關於SqlServer

SQL Server 分區視圖允許各機構調節各自系統以處理大量數據。這種功能使您能夠在多個表之間對數據進行分區;在邏輯上通過視圖把各個表聯合起來,使分區盡可能對用戶與開發人員透明。以前發表的幾篇文章(包括我和 Kalen Delaney 發表的兩篇,其中一篇“分布式分區視圖”2000 年 8 月發表,InstantDoc ID 9086,另一篇“查詢分布式分區視圖”2000 年 9 月發表,InstantDoc ID 9097)曾經介紹了分區視圖。SQL Server 聯機叢書 (BOL) 也涉及到一些基礎知識。在這篇文章中,我與您分享一些您可能不曾注意到的技巧,包括使用 Enterprise Manager 對分區進行架構更改的負作用,如何繞過對通過分區視圖向表中插入數據的方式的限制,以及在分區標准中使用常量所引起的問題。

Enterprise Manager 中更改分區

我極為提倡使用 T-SQL,甚至是對於您通過 Enterprise Manager 能輕易執行的任務。除了可提高 T-SQL 技能,這種方法使我更好地明白我所做的操作並予以更多控制。另外,Enterprise Manager 並不總是以最有效的方式執行任務。例如,從 Enterprise Manager 對分區進行架構更改,會降低分區的性能與功能。為處理這個問題,首先運行sqlmag03/Html/PartitioningTipsListing_01.txt" target="_blank">清單 1 中的腳本來創建分區 Orders2000、Orders2001 與 Orders2002,以及可更新的分區視圖 Orders。

首先,需確保在檢索期間 Orders 在可更新性與分區消除方面提供全面的分區功能。分區排除是指 SQL Server 只訪問符合查詢篩選標准的相關分區。用以下三個定單填充 Orders。因為每個分區承載不同年份的行,所以各定單要放到不同的分區中:

INSERT INTO Orders(orderid, customerid, orderdate)



VALUES(1, 'aaaa', '20000109')



INSERT INTO Orders(orderid, customerid, orderdate)



VALUES(2, 'aaaa', '20010118')



INSERT INTO Orders(orderid, customerid, orderdate)



VALUES(3, 'aaaa', '20020212')



正如在 BOL ???ù?è???????ù?Orders 分區視圖滿足了可更新性的所有要求,所以 INSERT 語句很成功。現在,為了驗證在數據檢索期間是否發生了分區排除,將 STATISTICS IO 設置為打開,並且將 Query Analyzer 中 Query 菜單下的 Show Execution Plan 選項設置為打開。注意,通過將這個選項設置為打開,當運行查詢時,您請求優化器生成並使用的實際計劃。此選項與 Display Estimated Execution Plan 選項(不運行查詢,只顯示估計計劃)形成對比。

為了測試分區排除,對 Orders 發出下面的 SELECT 語句,來只檢索 2000 年 1 月份的數據:

SET STATISTICS IO ON



SELECT * FROM Orders



WHERE orderdate >= '20000101'



AND orderdate < '20000201'



注意在 STATISTICS IO 結果中,SQL Server 物理上只訪問了 Orders2000;針對其他所有分區的 I/O 數量為 0:

Table 'Orders2002'. Scan count 0, logical reads 0, ...



Table 'Orders2001'. Scan count 0, logical reads 0, ...



Table 'Orders2000'. Scan count 1, logical reads 2, ...



在圖形執行計劃中,把鼠標指針懸停在三個群集索引搜索運算符處。注意,在Y詳細資料框中,實際執行的只有 Orders2000 分區計劃中的分支(執行數目:1);而其他的則沒有被執行(執行數目:0)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved