SQL Server 分区视图

SQL Server 分区视图

ID:38191674

大小:18.90 KB

页数:8页

时间:2019-06-07

SQL Server 分区视图_第1页
SQL Server 分区视图_第2页
SQL Server 分区视图_第3页
SQL Server 分区视图_第4页
SQL Server 分区视图_第5页
资源描述:

《SQL Server 分区视图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、SQLServer分区视图2011-05-1720:58SQLServer分区视图 在数据库中,对于一些长年累月不断递增的表,难免会发生执行速度越来越慢的问题。做分区表,是一种解决办法。“:>>>>>>假如条件不允许做分区表的话,例如:当你创建一个分区函数的时候,系统提示你:只能在SQLServerEnterpriseEdition中创建分区函数。只有SQLServerEnterpriseEdition支持分区。那么分区表,是没法用了,只能想别的办法了。 情况一或者是数据库里面的一张大表,已经按时间,拆分为多个小表了。但是客户要求软件里面,查询数据,要和没拆分之

2、前一样。例如:原先的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表的部分数据. 情况二或者是数据库本身就被设计成多张小表。例如:有个仓库字典表记录着仓库的名字,仓库

3、的表名。表里面的数据可能是大仓库1 tab_big1大仓库2 tab_big2小仓库1 tab_small小仓库2 tab_small小仓库3 tab_small有很多个仓库表(表名就是仓库字典表中所定义的),记录着当前仓库存储着什么物品。当你要查询某个仓库的库存报表的时候。不好意思,你要先去仓库字典表,先查询出这个仓库名字所对应的数据库表名称叫啥。然后再SELECT*FROM表名。如果你要查询,现在这个时候,某样物品,都在哪些仓库有,各有多少个,那就更悲惨了。要DISTINCT仓库字典表中的表名,然后依次去检索每个仓库的数据。普通的视图,可以解决上面的多次检索

4、表的问题。但是性能上恐怕不能接受。看了一下SQLServer的分区视图,主要是要求,创建视图中的每个表,需要有一个独立的约束信息。让数据库引擎能够在查询的时候,知道哪些表,是可以忽略的。从而避免不必要的查询开销。  例子一下面首先是那个2008--今天的销售数据的例子: 注意,下面表定义中的Check是分区视图所必须的。如果没有Check约束,那么最后的视图,就仅仅是普通的视图。--2008年数据.CREATETABLEsale_data_2008( sale_date DATETIMENOTNULL, sale_item VARCHAR(2)NOTNULL, 

5、sale_moneyDECIMAL(10,2)NOTNULL, CHECK(sale_date>='2008-01-0100:00:00'        ANDsale_date<'2009-01-0100:00:00'), PRIMARYKEY(sale_date,sale_item));GO--2009年数据.CREATETABLEsale_data_2009( sale_date DATETIMENOTNULL, sale_item VARCHAR(2)NOTNULL, sale_moneyDECIMAL(10,2)NOTNULL, CHECK(sale_

6、date>='2009-01-0100:00:00'        ANDsale_date<'2010-01-0100:00:00'), PRIMARYKEY(sale_date,sale_item));GO--2010年数据.CREATETABLEsale_data_2010( sale_date DATETIMENOTNULL, sale_item VARCHAR(2)NOTNULL, sale_moneyDECIMAL(10,2)NOTNULL, CHECK(sale_date>='2010-01-0100:00:00'        ANDsale_d

7、ate<'2011-01-0100:00:00'), PRIMARYKEY(sale_date,sale_item));GO--当前数据.CREATETABLEsale_data( sale_date DATETIMENOTNULL, sale_item VARCHAR(2)NOTNULL, sale_moneyDECIMAL(10,2)NOTNULL, CHECK(sale_date>='2011-01-0100:00:00'        ANDsale_date<'2012-01-0100:00:00'), PRIMARYKEY(sale_date,sal

8、e_item));GO 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。