SQL Server 分区视图.docx_第1页
SQL Server 分区视图.docx_第2页
SQL Server 分区视图.docx_第3页
SQL Server 分区视图.docx_第4页
SQL Server 分区视图.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQL Server 分区视图2011-05-17 20:58SQL Server 分区视图在数据库中,对于一些长年累月不断递增的表,难免会发生执行速度越来越慢的问题。做分区表,是一种解决办法。“:假如条件不允许做分区表的话,例如:当你创建一个分区函数的时候,系统提示你:只能在 SQL Server Enterprise Edition 中创建分区函数。只有 SQL Server Enterprise Edition 支持分区。那么分区表,是没法用了,只能想别的办法了。情况一或者是 数据库里面的一张大表,已经按时间,拆分为多个小表了。但是客户要求软件里面,查询数据,要和没拆分之前一样。例如:原先的 sale_data 包含 2008年-今天的数据。现在的 sale_data 被拆分为 sale_data_2008,sale_data_2009,sale_data_2010,sale_data(这个仅保存2011年数据)也就是假如客户要查询 2009年12月-2010年1月的报表。不好意思,你要自己判断了。先判断时间 2009年12月,然后去 检索 sale_data_2009 表的部分数据接着再判断时间 2010年1月,然后去 检索 sale_data_2010 表的部分数据.情况二或者是数据库本身就被设计成多张小表。例如:有个 仓库字典表 记录着仓库的名字,仓库的表名。表里面的数据可能是大仓库1 tab_big1大仓库2 tab_big2小仓库1 tab_small小仓库2 tab_small小仓库3 tab_small有很多个 仓库表(表名就是 仓库字典表中所定义的),记录着当前仓库存储着什么物品。当你要查询某个仓库的库存报表的时候。不好意思,你要先去 仓库字典表 ,先查询出这个仓库名字 所对应的 数据库表名称叫啥。然后再 SELECT * FROM 表名。如果你要查询,现在这个时候,某样物品,都在哪些仓库有,各有多少个,那就更悲惨了。要 DISTINCT 仓库字典表中的 表名,然后依次去检索 每个仓库的数据。普通的视图,可以解决上面的 多次检索表的问题。但是性能上恐怕不能接受。看了一下 SQL Server 的分区视图,主要是要求,创建视图中的每个表,需要有一个独立的约束信息。让数据库引擎能够在查询的时候,知道哪些表,是可以忽略的。从而避免不必要的查询开销。例子一下面首先是那个 2008-今天的销售数据的例子:注意,下面表定义中的 Check 是分区视图所必须的。如果没有 Check 约束,那么最后的视图,就仅仅是普通的视图。- 2008年数据.CREATE TABLE sale_data_2008( sale_date DATETIME NOT NULL , sale_item VARCHAR(2) NOT NULL , sale_money DECIMAL(10,2) NOT NULL, CHECK (sale_date = 2008-01-01 00:00:00 AND sale_date = 2009-01-01 00:00:00 AND sale_date = 2010-01-01 00:00:00 AND sale_date = 2011-01-01 00:00:00 AND sale_date = 2010-01-01 AND sale_date = 非预留的最小编号- 创建 分区视图CREATE VIEW all_store_data ASSELECT * FROM tab_big1 UNION ALLSELECT * FROM tab_big2 UNION ALLSELECT * FROM tab_small;GO- 分别向各表插入数据.INSERT INTO tab_big1 VALUES (大仓库1, 可乐, 5000);INSERT INTO tab_big2 VALUES (大仓库2, 啤酒, 10000);INSERT INTO tab_small SELECT 小仓库1, 牛奶, 10 UNION ALL SELECT 小仓库2, 果汁, 20 UNION ALL SELECT 小仓库3, 纯净水, 30;GO- 下面查询 小仓库1 里面的物品.SELECT *FROM all_store_dataWHERE store_name = 小仓库1;GOstore_name item_name item_count- - -小仓库1 牛奶 10(1 行受影响)表 tab_small。扫描计数 1,逻辑读取 2 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。注

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论