SQL Server 頁面查詢超時(SOS_SCHEDULER_YIELD等待)

pursuer.chen發表於2018-02-23

一、問題概述

問題大概是這樣的,有一個功能頁面經常查詢超時,有時候就算能查詢出來也要很長的時間,但是有時又會很快。遇到的這種問題在排除掉網路原因之後基本上可以從查詢語句上去找原因。

編譯查詢SQL語句和查詢程式等待結果如下:

1.程式等待

2.編譯查詢

問題分析:

1.等待型別為SOS_SCHEDULER_YIELD並且CPU時長很長

2.而且查詢時長基本上都是消耗在編譯這塊,實際的查詢時長不到一秒。

SOS_SCHEDULER_YIELD等待是SQL Server OS排程這塊的執行緒之間的切換的等待。

 

這裡出於不便沒有把SQL語句貼上,實際的SQL語句單單子查詢就達60多個,查詢語句達到200行,導致生成執行計劃的時間過長。單個子查詢很簡單。

二、解決方案

出現上面的這個原因是由於查詢語句子查詢太多導致編譯時間過長,解決辦法可以將每一個子查詢單獨查詢賦值到變數,或者把子查詢冗餘處理。

 

 

 

 

 

 

備註:

    作者:pursuer.chen

    部落格:http://www.cnblogs.com/chenmh

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結,否則保留追究責任的權利。

《歡迎交流討論》

 

相關文章