当前位置: 代码迷 >> Sql Server >> 没法创建索引视图
  详细解决方案

没法创建索引视图

热度:53   发布时间:2016-04-24 09:36:04.0
无法创建索引视图

select 
MatId = ID.MatId
,Amt = ID.Amt 
From dbo.InvInDetail ID 
Where  Not Exists(Select * From dbo.InvOutDetail where RecoId = ID.RecoId

无法对视图 "dbo.vOnHandIn" 创建 索引,因为其中包含一个或多个子查询。请考虑将视图更改为仅使用联接而不使用子查询。另外,请考虑不对视图进行索引。

因数据太多,主要想实现 检索 InvInDetail 没有在 InvOutDetail 发生的记录,如 InvInDetail 有500万条,在 InvOutDetail 没有发生的可能只有1万条,同时InvOutDetail 可能会经常删除,如果删除了就相当于没有发生
------解决思路----------------------
大数据本来就不应该用全选视图。
不是已经给出建议了,用原表进行 NOT EXISTS 判断,照做啊。
------解决思路----------------------
InvInDetail加个标识列,并创建一个索引,当表InvOutDetail插入或者写入数据时根据关联更新InvInDetail的标识列,你取数据的时候直接从InvInDetail取标识列没有更新的数据,这样就会快了
------解决思路----------------------
用原表并且有索引的情况下 NOT EXISTS 不会慢。
  相关解决方案