加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用UNION运算符在SQL视图上创建索引?它真的会提高性能吗?

发布时间:2020-12-12 05:59:49 所属栏目:MsSql教程 来源:网络整理
导读:我正在尝试在以下视图上创建索引: SELECT 'Candidate' AS Source,CandidateID AS SourceId,LastName + ',' + FirstName AS SourceNameFROM dbo.CandidatesUNIONSELECT 'Resource' AS Source,ResourceID AS SourceId,' + FirstName AS SourceNameFROM dbo.Res
我正在尝试在以下视图上创建索引:
SELECT     'Candidate' AS Source,CandidateID AS SourceId,LastName + ',' + FirstName AS SourceName
FROM         dbo.Candidates
UNION
SELECT     'Resource' AS Source,ResourceID AS SourceId,' + FirstName AS SourceName
FROM         dbo.Resources
UNION
SELECT     'Deal' AS Source,DealID AS SourceId,CONVERT(varchar,Number) + '-' + CONVERT(varchar,RevisionNumber) AS SourceName
FROM         dbo.Deals
UNION
SELECT     'Job Order' AS Source,JobOrderID AS SourceId,CustomerNumber AS SourceName
FROM         dbo.JobOrders

我收到以下错误:

Msg 1939,Level 16,State 1,Line 2
Cannot create index on view '_Source' because the view is not schema bound.

我将WITH SCHEMABINDING添加到CREATE,现在出现以下错误:

Msg 10116,Line 2
Cannot create index on view 'DEALMAKER.dbo._Source' because it contains one or more UNION,INTERSECT,or EXCEPT operators. Consider creating a separate indexed view for each query that is an input to the UNION,or EXCEPT operators of the original view.

我的问题是:

如何在此视图上创建索引?创建单独的索引视图真的有效吗?

最后,我是否真的会看到可能加入此视图的任何查询的性能提升?

提前致谢!

解决方法

您无法在使用union运算符的视图上创建索引.真的没办法,对不起!

我想你已经看到了这个,但看看这个MSDN page.它给出了索引视图的要求并解释了它们是什么以及它们是如何工作的.

至于如果你可以为视图编制索引,你是否会看到性能优势,这完全取决于表的大小.我不希望对创建单独的索引视图有任何影响,因为我假设您的表已经编入索引,并且您没有在视图中进行任何连接或逻辑.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读