如何优化视图内的查询



>我有以下查询,在我的视图中需要很长时间。我不能使用索引,因为它是视图,我在我的视图中使用 Select * 语句。

    SELECT  *
    FROM shell_v3 v3, 
    Shell_v41 v41, 
    core_demandsupply ds1,
    core_demandsupply ds2
    WHERE v41.profile_group = v3.profile_group
    AND v41.company = v3.company
    AND v41.product = v3.product
    AND v41.source_facility = ds2.facility
    AND v41.facility = ds1.facility
    AND case when ds1.reqd_date < getdate()
             then getdate()
             else ds1.reqd_date 
        end between v41.effective_Date and V41.Inactive_Date

为什么不能使用索引?视图仍在从现有表中选择,因此可以在其上添加索引。

考虑添加(如果不存在)以下索引:

shell_v3(profile_group,company,product)
Shell_v41(profile_group,company,product,source_facility,facility)
Shell_v41(facility,effective_Date,Inactive_Date)
core_demandsupply(facility,reqd_date)

这应该会显着提高您的表现。

最新更新