日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)設(shè)計

今天我們向大家講述的是SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)設(shè)計的簡捷概述,SQL Server 數(shù)據(jù)庫中的分區(qū)表主其可以使用可更新或者是可查詢(不可更新)的分區(qū)視圖。在這兩種情況下,表分區(qū)都是由每個分區(qū)都包含正確數(shù)據(jù)的 CHECK 約束來創(chuàng)建的。

一個可更新的分區(qū)視圖支持對視圖進行 INSERT (或 UPDATE 或 DELETE)操作,并將操作推入至正確的基礎(chǔ)表。這很有益處,但SQL Server 2000 數(shù)據(jù)倉庫應(yīng)用程序通常需要進行批量加載,而這是無法通過視圖執(zhí)行的。下表總結(jié)了可更新和可查詢分區(qū)視圖的要求、優(yōu)點和缺點。

Microsoft 建議的做法是定義主鍵,并將事實表設(shè)計為本地(單個服務(wù)器上)的分區(qū)聯(lián)合視圖。大多數(shù)情況下,該定義會產(chǎn)生可更新的分區(qū)視圖,但SQL Server 2000 數(shù)據(jù)倉庫維護應(yīng)用程序應(yīng)設(shè)計為直接將大多數(shù)數(shù)據(jù)批量加載至成員表(而不是通過視圖進行)。

語法示例:

以下代碼示例用來說明定義成員表和聯(lián)合視圖以及將數(shù)據(jù)插入視圖的語法:

創(chuàng)建 1999 年事實表:

 
 
 
  1. CREATE TABLE [dbo].[sales_fact_19990101] (   [date_key] [int] NOT NULL CHECK ([date_key] BETWEEN 19990101 AND 19991231),     
  2. [product_key] [int] NOT NULL ,   [customer_key] [int] NOT NULL ,   [promotion_key] [int] NOT NULL ,     
  3. [store_key] [int] NOT NULL ,   [store_sales] [money] NULL ,   [store_cost] [money] NULL ,    
  4. [unit_sales] [float] NULL ) ALTER TABLE [sales_fact_19990101] ADD PRIMARY KEY ( [date_key], [product_key], [customer_key], [promotion_key], [store_key])  

創(chuàng)建 2000 年事實表:

 
 
 
  1. CREATE TABLE [dbo].[sales_fact_20000101] (   [date_key] [int] NOT NULL CHECK ([date_key]  
  2. BETWEEN 20000101 AND 20001231),   [product_key] [int] NOT NULL ,   [customer_key] [int] NOT NULL ,     
  3. [promotion_key] [int] NOT NULL ,   [store_key] [int] NOT NULL ,   [store_sales] [money] NULL ,     
  4. [store_cost] [money] NULL ,   [unit_sales] [float] NULL ) ALTER TABLE [sales_fact_20000101]   
  5. ADD PRIMARY KEY ( [date_key], [product_key], [customer_key], [promotion_key], [store_key])  

創(chuàng)建 UNION ALL 視圖:

 
 
 
  1. CREATE VIEW [dbo].[sales_fact] AS SELECT * FROM [dbo].[sales_fact_19990101] UNION ALL SELECT * FROM [dbo].[sales_fact_20000101] 

現(xiàn)在插入幾行數(shù)據(jù),例如:

 
 
 
  1.  INSERT INTO [sales_fact] VALUES (19990125, 347, 8901, 0, 13, 5.3100, 1.8585, 3.0)   
  2. INSERT INTO [sales_fact] VALUES (19990324, 576, 7203, 0, 13, 2.1000, 0.9450, 3.0)   
  3. INSERT INTO [sales_fact] VALUES (19990604, 139, 7203, 0, 13, 5.3700, 2.2017, 3.0)   
  4. INSERT INTO [sales_fact] VALUES (20000914, 396, 8814, 0, 13, 6.4800, 2.0736, 2.0)   
  5. INSERT INTO [sales_fact] VALUES (20001113, 260, 8269, 0, 13, 5.5200, 2.4840, 3.0)  

要驗證分區(qū)是否正常工作,請使用查詢分析器來顯示查詢計劃,例如:

 
 
 
  1. SELECT TOP 2 * FROM sales_fact WHERE date_key = 19990324 

您應(yīng)該看到查詢計劃中僅包括表 1999。將該查詢計劃與主鍵已刪除的相同表生成的查詢計劃相比較,我們會發(fā)現(xiàn):表 2000 仍然被排除。將這些計劃與在已刪除 date_key 約束的架構(gòu)上生成的查詢計劃進行對比。這些約束被刪除的情況下,表 1999 和表 2000 都被包括在查詢中。

請注意,在通常情況下,在大型表上執(zhí)行查詢時,使用“TOP N”語法是好的做法,因為它可以迅速返回結(jié)果并使用最少的服務(wù)器資源。查看分區(qū)表的查詢計劃時,這一點尤為重要,因為由“SELECT *”語句生成的查詢計劃很難解析。對于偶爾進行觀察的人而言,盡管在查詢執(zhí)行期間,查詢中僅使用相關(guān)的表,但表面看起來好象查詢計劃包括了 UNION ALL 視圖的所有組件表。

將條件直接應(yīng)用于事實表:

要獲得***的查詢性能,所有的查詢都應(yīng)將條件直接放在事實表中的篩選鍵上。將約束放在第二張表(例如日期矢量表)的查詢將包括所有分區(qū)。對 UNION ALL 事實表的標準星號聯(lián)合查詢工作良好,將條件放在任意未分區(qū)的矢量表的屬性上,以標準方式創(chuàng)建星號查詢 WHERE 子句,包括分區(qū)矢量(日期)的屬性。

在分區(qū)矢量架構(gòu)上設(shè)計查詢與在未分區(qū)的架構(gòu)上設(shè)計完全一樣,只不過將日期條件直接放在事實表中的日期鍵上時日期條件最為有效。

如果每一分區(qū)表的索引中的***個列為帶日期的簇索引,轉(zhuǎn)到所有分區(qū)解析某一特定查詢的開銷相對較小。編寫預(yù)定義的查詢時應(yīng)盡可能提高其效率,例如那些生成標準報表或漸變更新下行數(shù)據(jù)流數(shù)據(jù)庫的查詢。 以上的相關(guān)內(nèi)容就是對在SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)設(shè)計概述 的介紹,望你能有所收獲。

【編輯推薦】

  1. MS-SQL server數(shù)據(jù)庫開發(fā)中的技巧
  2. SQL Server里調(diào)用COM組件的操作流程
  3. SQL Server安全規(guī)劃的闡述
  4. 正確分析MS SQL Server函數(shù)的2種用法
  5. 正確檢查SQL Server補丁版本的操作流程

當前標題:SQL Server 2000 數(shù)據(jù)倉庫中使用分區(qū)之分區(qū)設(shè)計
標題URL:http://www.5511xx.com/article/dpgcche.html