针对视图联接:性能问题

LaB*_*cca 5 sql-server optimization views query-optimization

从性能的角度来看,这样做是否相同:

select * from MYTABLEONE MT1
join MYVIEW MV on MT1.ID = MV.ID
Run Code Online (Sandbox Code Playgroud)

(视图所在的位置

create view MYVIEW as
select MT2.*, MT3.*
from MYTABLETWO MT2
join MYTABLETHREE MT3 on MT2.OtherID = MT3.OtherID
Run Code Online (Sandbox Code Playgroud)

)

或者最好这样做:

select MT1.*, MT2.*, MT3.*
from MYTABLEONE MT1
join MYTABLETWO MT2 on MT1.ID = MT2.ID
join MYTABLETHREE MT3 on MT2.OtherID = MT3.OtherID
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 5

假设不是索引视图......

视图将像宏一样展开,并应生成相同的计划。

除非重用视图,否则视图不会增加任何价值。但是,您可以最终以视图加入到视图加入到视图,当展开时,会给出比预期复杂得多的计划。

恕我直言,除非您知道自己在做什么,否则不要使用视图。