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 不会慢。