日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql性能优化之多表联查

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql性能优化之多表联查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先貼上我優化后的核心代碼:

select * into #result from (
select p.AchivementCount,isnull(a.ByAttentionCount,0) ByAttentionCount, u.Id,u.FullName,j.Name PostionName,u.ProfessionId,u.Disabled,u.UserName,u.ResearchArea,u.PositionId,u.DepartmentId,u.ORCID,d.DepartmentName, isnull(r.SCIIndex, 0) SCICount, isnull(e.EIIndex, 0) EICount,ISNULL(g.SCIOrEIIndex,0) SCIOrEICount

from IdentityUser u

inner Join #AchivementCountComputer p on u.Id=p.SuspectedId

LEFT JOIN Department d ON d.Id = u.DepartmentId

LEFT JOIN JobPosition j ON u.PositionId=j.Id

left join #ByAttentionCountComputer a on a.ByAttentionID=u.Id

left JOIN #SCIIndexComputer r ON u.ID = r.SuspectedID
LEFT JOIN #EIIndexComputer e ON u.ID = e.SuspectedID
LEFT JOIN #SCIOrEIIndexComputer g ON u.ID = g.SuspectedID

where u.ProfessionId=(select Id from JobProfession where Name='教師') and u.Disabled=0 and p.AchivementCount>0

) re


優化前的代碼是用視圖寫的,每張臨時表又是一個多表查詢。不僅難以閱讀,而且放到服務器上,web頁面加載不出來,由此可見,速度不是慢,是太慢了,在sqlserver中單獨執行,大約在40s-55s之間。

優化的方式:

?1、查看sql語句,盡量簡化代碼,有個清晰的結構。由于業務復雜,于是sql語句難免復雜,但是從代碼易讀性上考慮,可以優化代碼結構。比如我們可以用cte。

?2、查看sqlserver執行計劃,圖十分復雜,看的人眼花繚亂。看這圖,得從右邊向左邊看,慢慢分析,看主要性能耗費在哪個環節上。

?3、查看I/O統計

?

轉載于:https://www.cnblogs.com/wangqiang3311/p/5684639.html

總結

以上是生活随笔為你收集整理的sql性能优化之多表联查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。