tyy建一个存储过程create procedure activity
as
select * from activity2000 union
select * from activity2001 union
……
select * from activity2005
as
select * from activity2000 union
select * from activity2001 union
……
select * from activity2005
调试欢乐多
select a,b,c from activity2000 union
select a,b,c from activity2001 union
……
select a,b,c from activity2005这样也是提高效率的一个途径
实际上我的就是这样的。:)
分区视图是通过对成员表使用 UNION ALL 所定义的视图,这些成员表的结构相同,但作为多个表分别存储在同一个 SQL Server 中,或存储在称为联合 SQL Server 2000 服务器的自主 SQL Server 2000 服务器组中。在设计分区方案时,必须明确每个分区上包含的数据。例如,如果使 Customers 表数据分布在分别位于三个服务器上的三个成员表中(Customers_33 在 Server1 上,Customers_66 在 Server2 上,Customers_99 在 Server3 上),则要以下面的方式在 Server1 上定义分区视图:--Partitioned view as defined on Server1
CREATE VIEW Customers
AS
--Select from local member table
SELECT *
FROM CompanyData.dbo.Customers_33
UNION ALL
--Select from member table on Server2
SELECT *
FROM Server2.CompanyData.dbo.Customers_66
UNION ALL
--Select from mmeber table on Server3
SELECT *
FROM Server3.CompanyData.dbo.Customers_99一般情况下,如果视图为下列格式,则称其为分区视图:SELECT <select_list1>
FROM T1
UNION ALL
SELECT <select_list2>
FROM T2
UNION ALL
...
SELECT <select_listn>
FROM Tn分区视图的创建条件 SELECT 列表
成员表中的所有列应在视图定义的列列表中被选定。
每个 select_list 中的同一序号位置上的列应属于同一类型,包括排序规则。列仅仅属于隐性可转换类型(如 UNION 的通常情况下)是不够的。
另外,at least one 列(例如 <col>)必须以相同的序号位置出现在所有 SELECT 列表中。应这样定义 <col>:使成员表 T1,...,Tn 在 <col> 上分别定义 CHECK 约束 C1,...,Cn。必须以下面的格式在表 T1 上定义约束 C1:C1 ::= < simple_interval > [ OR < simple_interval > OR ...]
< simple_interval > :: =
< col > { < | > | <= | >= | = }
| < col > BETWEEN < value1 > AND < value2 >
| < col > IN ( value_list )
| < col > { > | >= } < value1 > AND
< col > { < | <= } < value2 >约束应使 <col> 的任何给定值都能满足约束 C1,...,Cn 的 at most one,这样,约束应形成一套不连接的或非重叠的间隔。定义不连接的约束的列 <col> 称为"分区列"。请注意分区列在基础表中可能有不同的名称。约束应处于"已启用"状态,以使它们满足分区列的上述条件。如果禁用了约束,则请使用 ALTER TABLE 的 WITH CHECK 选项或 CHECK constraint_name 选项重新启用约束检查。
下面是有效约束集的示例:{ [col < 10], [col between 11 and 20] , [col > 20] }
{ [col between 11 and 20], [col between 21 and 30], [col between 31 and 100] }在 SELECT 列表中不能多次使用同一列。
分区列
分区列是表的 PRIMARY KEY 的一部分。
不能是计算、标识、默认或 timestamp 列。
如果成员表中的同一列上存在多个约束,则 SQL Server 忽略所有约束且在确定视图是否为分区视图时不考虑这些约束。为满足分区视图的条件,在分区列上应只有一个分区约束。
对分区列的可更新性没有约束。
成员表(或基础表 T1,...,Tn)
表可以是本地表,也可以是通过由四部分构成的名称或基于 OPENDATASOURCE 或 OPENROWSET 的名称引用的其它 SQL Server 中的表。(OPENDATASOURCE 和 OPENROWSET 语法可以指定表名,但不能指定直接传递查询。)有关更多信息,请参见 OPENDATASOURCE 和 OPENROWSET。
如果一个或多个成员表是远程表,则视图称为 distributed partitioned view,并且适用附加条件。本节稍后将对其进行讨论。在用 UNION ALL 语句组合的表集中,同一个表不能出现两次。
成员表不能在表中的计算列上创建索引。
成员表在数目相同的列上应具有所有 PRIMARY KEY 约束。
视图中的所有成员表应有相同的 ANSI 填充设置(使用 sp_configure 中 user options 选项或 SET 选项设置)。
1.所有Table的Schema完全相同;
2.所有Table都必须有一个约束(SQLServer将根据查询条件和各个table的约束来决定应该真正扫描哪些table);
3.在创建视图的语句中使用UNION ALL而不要使用UNION;另外可以在每个Table上创建索引.