SQL Server 2008 创建索引视图(物化视图) 的一点总结
2011-10-10 16:18
399 查看
SQL Server 2008 的索引视图似乎只能通过sql命令的方式创建, 暂未找到可视化创建的办法, 有谁知道吗?
要点:
1.必须要加上WITH SCHEMABINDING, 就是绑定到架构.
2.创建完视图后, 必须紧跟着创建一个CLUSTERED聚集唯一索引.
3.只支持两部分命名的表或UDF, 如 dbo.SalesOrder.
4.涉及到多个表连接时, 不支持left join 或inner join的写法, 只能用from...where的方式或inner join的方式连接. (这一点有时很要命, 如果join多个表, 而这些表又不能都用inner join的方式时.)
5.不支持table.*这种懒省事的方式, 得一个一个把想要的列写清楚.
下面是实际代码
CREATE VIEW vw_SalesOrderIndexView
WITH SCHEMABINDING
AS
SELECT T1.SalesOrderID,T1.CustomerID,T1.ResellerID, T2.ResellerName, T3.CustomerName, T1.SalesOrderID + ' ' + T2.ResellerName + ' ' + T3.CustomerName as FullTextSearch
FROM dbo.SalesOrder AS T1
inner join dbo.Reseller AS T2 on T1.ResellerID = T2.ResellerID
inner join dbo.Customer as T3 on T1.CustomerID = T3.CustomerID
GO
--Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON vw_SalesOrderIndexView (SalesOrderID);
GO
最后, 打开Microsoft SQL Server Management Studio, 可以在Views下面看到刚才创建的索引视图(index view), 看起来似乎和普通的视图没什么区别, 只有点开看到Indexex里面有IDX_V1索引, 这才能看到具体的区别.
至于它的更新, 是自动的, 不需要设置, 我也没找到设置的地方. 总之就是基础表修改后, 会自动传播到索引视图, 估计里面有类似观察者模式之类的机制.
参考资料:
http://msdn.microsoft.com/zh-cn/library/ms187864(v=SQL.100).aspx
要点:
1.必须要加上WITH SCHEMABINDING, 就是绑定到架构.
2.创建完视图后, 必须紧跟着创建一个CLUSTERED聚集唯一索引.
3.只支持两部分命名的表或UDF, 如 dbo.SalesOrder.
4.涉及到多个表连接时, 不支持left join 或inner join的写法, 只能用from...where的方式或inner join的方式连接. (这一点有时很要命, 如果join多个表, 而这些表又不能都用inner join的方式时.)
5.不支持table.*这种懒省事的方式, 得一个一个把想要的列写清楚.
下面是实际代码
CREATE VIEW vw_SalesOrderIndexView
WITH SCHEMABINDING
AS
SELECT T1.SalesOrderID,T1.CustomerID,T1.ResellerID, T2.ResellerName, T3.CustomerName, T1.SalesOrderID + ' ' + T2.ResellerName + ' ' + T3.CustomerName as FullTextSearch
FROM dbo.SalesOrder AS T1
inner join dbo.Reseller AS T2 on T1.ResellerID = T2.ResellerID
inner join dbo.Customer as T3 on T1.CustomerID = T3.CustomerID
GO
--Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_V1
ON vw_SalesOrderIndexView (SalesOrderID);
GO
最后, 打开Microsoft SQL Server Management Studio, 可以在Views下面看到刚才创建的索引视图(index view), 看起来似乎和普通的视图没什么区别, 只有点开看到Indexex里面有IDX_V1索引, 这才能看到具体的区别.
至于它的更新, 是自动的, 不需要设置, 我也没找到设置的地方. 总之就是基础表修改后, 会自动传播到索引视图, 估计里面有类似观察者模式之类的机制.
参考资料:
http://msdn.microsoft.com/zh-cn/library/ms187864(v=SQL.100).aspx
相关文章推荐
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
- SQL Server索引 - 索引(物化)视图 <第九篇>
- SQL SERVER 2008 ——创建索引
- 物化视图,索引视图,函数索引,创建索引时使用DESC
- SQL Server:创建索引视图
- oracle 物化视图及创建索引
- SQL SERVER 2008 ——创建索引
- SQL Server 2008中文版标准教程读书笔记 架构、索引与视图(复习SQL Server 七)
- SQL Server:创建索引视图
- SQL Server索引 - 索引(物化)视图 <第九篇>
- SQL Server索引 - 索引(物化)视图 <第九篇>
- SQL Server:创建索引视图
- SQL Server:创建索引视图
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
- SQL Server 2008 学习笔记(三)视图的创建与修改
- SQL Server索引视图以(物化视图)及索引视图与查询重写
- SQL Server 优化---为什么索引视图(物化视图)需要with(noexpand)强制查询提示
- sql server 2008 新功能创建压缩表和索引
- SQL SERVER 2008的一点工作总结
- Visual C# 2008+SQL Server 2005 数据库与网络开发--4.5.2 使用SQL创建视图