【发布时间】:2022-12-14 14:50:32
【问题描述】:
我正在使用类似的查询。我无法在此处发布实际查询和执行计划。我尝试添加一个建议非聚集索引的执行计划,但它进一步减慢了查询速度。 我知道这是不完整的信息,但你能建议我可以尝试什么吗?我别无选择! 我将以下条件放在 where 子句中,日期看起来不错,但只要我添加其他 2 个中的任何一个,查询就需要几个小时。当我尝试查询视图时使用 where 条件。
where Date_Time between '2021-11-01 00:00:00.000' and '2022-11-02 00:00:00.000'
and Visit_code not in ('12', '13')
and mode_code <>'99'
Execution plan XML
CREATE VIEW [dbo].[vw_Test] AS
select fields
from table1 ed
left join table2 e on ed.field1_id = e.field1_id
left join table3 et on et.field1_id = ed.field1_id
left join table4 etf on etf.field1_id = e.field1_id
and etf.field2_cd= 85429041
and etf.dt_tm_field >= '2025-01-01 00:00:00.0000000'
left join table5 etf_dt on etf_dt.field1 = e.field1
and etf_dt.field3= 85429039
and etf_dt.dt_tm_field >= '2025-01-01 00:00:00.0000000'
left join table6 ei on ei.field1 = ed.field1
and ei.field4_cd = 123485.00
left join table7 cvo_ModeOfArrival on cvo_ModeOfArrival.field = ed.field6
and cvo_ModeOfArrival.field5 = 12345
left join table7 cvo_ModeOfSep on cvo_ModeOfSep.field = ei.field7
and cvo_ModeOfSep.field5 = 23456
left join table7 cvo_FinancialClass on cvo_FinancialClass.field = e.field8
and cvo_FinancialClass.field5 = 34567
left join table7 cvo_Specialty on cvo_Specialty.field = e.field9
and cvo_Specialty.field5 = 45678
left join table8 ea on ea.field1_id = e.field1_id
left join table7 cvo_ea on cvo_ea.field = ea.field10
and cvo_ea.field11 = 345666
GO
【问题讨论】:
-
那么
WHERE是否在您的VIEWs 定义中?我认为所有那些不合格的列(一个非常坏的习惯)都是明确的名称并引用table1? -
不,它们不引用同一个 table1(如果您正在谈论 field1_id 列)。对困惑感到抱歉。同一个id存在于不同的表中。它是外键,因此名称相同。 Where 不在视图定义中。当我尝试查询视图时。
-
您的视图是否已编入索引?您已标记索引视图,但从未在任何地方提及。
-
性能方面的帮助确实需要完整的表和索引定义以及实际的执行计划 - pastetheplan
-
没有什么可以阻止您在发布之前对 planxml 进行查找/替换。
标签: sql-server tsql sql-view