SQL Server效能問題

2021-04-21 14:18:59 字數 488 閱讀 7906

昨天遇到乙個奇怪的效能問題,乙個sql對於某些使用者特別的慢,需要2分鐘以上,但是把那個sql抓出來,把引數填進去直接執行又非常的快,只要不到2秒,猜測可能是和sql server的執行計畫出了問題,以前遇到過類似的問題,在某些狀況下,sql server的執行計畫很糟糕,稍稍修改了下sql,把引數中的乙個常量值0直接寫到sql中,問題解決。

修改前的sql片段(rfpid的值是0,1234兩個值,修改後等於1234):

and x.yid in (:rfpid)

修改後:

and x.yid in (0,:rfpid)

原來遇到的乙個效能問題類似,就是乙個很複雜的sql,對於某些使用者也是非常的慢(該使用者相關的資料比較多),查詢可能需要2分鐘,後來把複雜的sql切分成兩個sql,總共的查詢時間只需要不到1秒。

所以在使用sql server的時候,能夠直接在sql裡面固定的值直接寫到sql裡面,不要寫太複雜的sql,sql server的執行計畫優化器存在很多的問題。

SQL SERVER中 效能問題

1.對查詢進行優化,應盡量避免全表掃瞄,考慮在 where 及 order by 涉及的列上建立索引。2.避免使用 left join 和 null 值判斷。left join 比 inner join 消耗更多的資源。3.避免在 where 子句中使用 或 操作符,否則引擎可能放棄使用索引而進行全...

SQL server 查詢效能的問題

use spoofspam2 go object storedprocedure dbo getmessagelist script date 04 09 2013 18 00 34 set ansi nulls on goset quoted identifier on gocreate proc...

詳細講解SQL Server索引的效能問題

在良好的資料庫設計基礎上,能有效地使用索引是sql server取得高效能的基礎,sql server採用基於代價的優化模型,它對每乙個提交的有關表的查詢,決定是否使用索引或用哪乙個索引。因為查詢執行的大部分開銷是磁碟i o,使用索引提高效能的乙個主要目標是避免全表掃瞄,因為全表掃瞄需要從磁碟上讀表...