>我有以下查询,在我的视图中需要很长时间。我不能使用索引,因为它是视图,我在我的视图中使用 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)
这应该会显着提高您的表现。