科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在SQL Server 2000 数据仓库中使用分区

在SQL Server 2000 数据仓库中使用分区

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

分区视图联接来自一组成员的水平分区数据,使数据看起来象来自同一张表。SQL Server 2000 区分本地分区视图和分布式分区视图。

作者:tech.ddvip.com 来源:天新网 2008年4月28日

关键字: 数据库 Mssql SQL SQL Server

  • 评论
  • 分享微博
  • 分享邮件

分区设计概述

SQL Server 数据库中的分区表可以使用可更新或可查询(不可更新)的分区视图。在这两种情况下,表分区都是由每个分区都包含正确数据的 CHECK 约束来创建的。一个可更新的分区视图支持对视图进行 INSERT (或 UPDATE 或 DELETE)操作,并将操作推入至正确的基础表。这很有益处,但数据仓库应用程序通常需要进行批量加载,而这是无法通过视图执行的。下表总结了可更新和可查询分区视图的要求、优点和缺点。

Microsoft 建议的做法是定义主键,并将事实表设计为本地(单个服务器上)的分区联合视图。大多数情况下,该定义会产生可更新的分区视图,但数据仓库维护应用程序应设计为直接将大多数数据批量加载至成员表(而不是通过视图进行)。

语法示例:

以下代码示例用来说明定义成员表和联合视图以及将数据插入视图的语法:

创建 1999 年事实表:

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

创建 2000 年事实表:

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

创建 UNION ALL 视图:

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

现在插入几行数据,例如:

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

要验证分区是否正常工作,请使用查询分析器来显示查询计划,例如:

SELECT TOP 2 * FROM sales_fact WHERE date_key = 19990324
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章