問題大概是這樣的,有一個功能頁面常常查詢超時,有時候就算能查詢出來也要很長的時間,可是有時又會很快。遇到的這種問題在排除掉網絡緣由以後基本上能夠從查詢語句上去找緣由。網絡
編譯查詢SQL語句和查詢進程等待結果以下:spa
1.進程等待線程
2.編譯查詢blog
問題分析:進程
1.等待類型爲SOS_SCHEDULER_YIELD而且CPU時長很長get
2.並且查詢時長基本上都是消耗在編譯這塊,實際的查詢時長不到一秒。博客
SOS_SCHEDULER_YIELD等待是SQL Server OS調度這塊的線程之間的切換的等待。it
這裏出於不便沒有把SQL語句貼上,實際的SQL語句單單子查詢就達60多個,查詢語句達到200行,致使生成執行計劃的時間過長。單個子查詢很簡單。io
出現上面的這個緣由是因爲查詢語句子查詢太多致使編譯時間過長,解決辦法能夠將每個子查詢單獨查詢賦值到變量,或者把子查詢冗餘處理。編譯
備註: 做者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點全部隨筆都是原創,歡迎你們轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連接,不然保留追究責任的權利。 《歡迎交流討論》 |