寫法一(左連接):
select t.wonum,t.description,t.status,t.location,a.description,t.jpnum,b.description,
t.changeby,c.displayname,t.pmnum,d.description,t.ownergroup,e.description,
t.persongroup,f.description,t.lead,g.displayname
from workorder t
left join locations a on a.location=t.location
left join jobplan b on b.jpnum=t.jpnum and b.status='活動'
left join person c on c.personid=t.changeby
left join pm d on d.pmnum=t.pmnum
left join persongroup e on e.persongroup=t.ownergroup
left join persongroup f on f.persongroup=t.persongroup
left join person g on g.personid=t.lead
where t.woclass='工單';
寫法二(子查詢):
select t.wonum,t.description,t.status,
t.location,(select a.description from locations a where a.location=t.location),
t.jpnum,(select b.description from jobplan b where b.jpnum=t.jpnum and b.status='活動'),
t.changeby,(select c.displayname from person c where c.personid=t.changeby),
t.pmnum,(select d.description from pm d where d.pmnum=t.pmnum),
t.ownergroup,(select e.description from persongroup e where e.persongroup=t.ownergroup),
t.persongroup,(select f.description From persongroup f where f.persongroup=t.persongroup),
t.lead,(select g.displayname from person g where g.personid=t.lead)
from workorder t
where t.woclass='工單';
uj5u.com熱心網友回復:
大家傾向于哪種寫法呢?uj5u.com熱心網友回復:
如果你能用連接實作 你就要盡量用連接 子查詢效率比它低uj5u.com熱心網友回復:
這個要看資料量,子查詢中的資料量很大時,建議子查詢。具體怎么干,還要看執行計劃。 這是最準確的。
uj5u.com熱心網友回復:
子查詢比較清晰uj5u.com熱心網友回復:
閱讀上 第一種看的清楚點uj5u.com熱心網友回復:
通常是左連接,某些特定的時候,用子查詢。要看資料結構和執行計劃。uj5u.com熱心網友回復:
更傾向于第一種寫法,可以走hash 也可以走 nl,第二種寫法資料量小的時候沒問題,資料量大會出現性能問題。uj5u.com熱心網友回復:
這是一個關于多表關聯的問題,試試看《如何優化JOIN性能》這篇文章能否幫到您轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/55520.html
標籤:開發
