存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常
來自:http://blog.csdn.net/pgbiao/article/details/22388945
原因分析:
由於存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的時候, 會使用這個執行計劃(除非存儲過程侯或者顯示指定重新編譯), 而不是每次執行時都去生成執行計劃。
當存儲過程涉及的對象結構調整, 或者相關的數據產生了很大變化, 這可能導致原來的計劃不適合當前的現狀(執行計劃過期), 這種情況下應該重新編譯存儲過程。
解決方法:
1、手動重編譯:
exec sp_recompile @objname=‘存儲過程名稱‘
2、如果是執行頻率不高的存儲過程,可以在腳本中設置每次執行自動重編譯,如:
ALTER PROC [dbo].[存儲過程名稱] @bDate DATETIME, @eDate DATETIME WITH recompile -- 設置重編譯避免程序調用超時 AS BEGIN
存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常
相關推薦
存儲過程被程序和第三方客戶端執行很慢,而sql server management studio執行速度正常
一次 com 客戶 正常 gem class .net 顯示 exec 來自:http://blog.csdn.net/pgbiao/article/details/22388945 原因分析:由於存儲過程是預編譯的, 在第一次執行的時候, 會生成執行計劃, 以後執行的
利用navicat創建存儲過程、觸發器和使用遊標的簡單實例
.net fill student default hand 結果 alt 神奇 行記錄 原文鏈接 創建存儲過程和觸發器 1、建表 首先先建兩張表(users表和number表),具體設計如下圖: 2、存儲過程 寫一個存儲過程,往users表中插入數據,創建
SQL Server 2014存儲過程的備份和還原
語句 誤刪除 記事本 nbsp 位置 管理軟件 使用 恢復 ima Sql Server 2014存儲過程備份和恢復... 1 1、 備份存儲過程:... 1 2、 還原... 8 Sql Server 2014存儲過程備份和恢復 1、 備份存儲過程
MySQL之存儲過程創建和調用
可讀性 primary 數據表 刪掉 start dml lec 插入 ora 一、MySQL存儲過程_創建-調用 1.1存儲過程:SQL中的“腳本”1.創建存儲過程2.調用存儲過程3.存儲過程體4.語句標簽塊 二、MySQL存儲過程簡單介紹: 存儲過程(Store
SQL server 存儲過程的建立和調用
返回 ndt 簡單 系統變量 update object sele ring 句柄 存儲過程的建立和調用 --1.1準備測試需要的數據庫:test,數據表:物料表,采購表if not exists (select * from master.dbo.sysdatabas
使用 SQL Server Management Studio 連線和查詢 SQL Server 例項
1、連線SQLServer例項 1.1、啟動 SQL Server Management Studio。 首次執行 SSMS 時,系統將開啟“連線到伺服器”視窗。 如未開啟,可以選擇“物件資源管理器” > “連線” > “資料庫引擎”,將其手動開啟。
解決“SQL sever2017安裝過程卡頓”以及沒有“Microsoft Sql Server Management Studio管理器”的問題
1.“SQL sever2017安裝過程卡頓 win10下安裝SQL Server 2017,一路預設加全選式安裝,結果在安裝過程中一直卡在下圖的介面中,如圖: 最後在CSDN中找到了解決
儲存過程執行很慢,請求優化
SELECT TD.CourseID,TU.StudentUserID,COUNT(EU.ExerciseSubjectID) AS SubmitCouont ,COUNT(ES.ExerciseSubjectID)-COUNT(EU.ExerciseSubjectI
oracle資料庫連線非常慢,sqlplus很快,客戶端就很慢
在客戶端連線伺服器的時候,點選“登入”,需要10秒多鍾才可以連線到資料庫,連線後操作一切正常。在客戶端用tnsping伺服器,如下:C:\Documents and Settings\Administrator>tnsping ORA11G很長時間沒反應原因在於:!!!
存儲過程和視圖的區別
硬盤 容易 生成 reply 想象 簡單 text 什麽 單個 SQL裏面不帶參數的存儲過程與視圖的區別1、存儲過程是程序化的sql可以實現一般sql不能實現的功能。 如:先檢索一個表得到一些數據,經過一定的編輯後更新到另外一個表中、這就可以用不帶參數的存儲過程實現。 2
EF執行SQL語句和存儲過程
div spa rip mman code rom {0} base result EF雖然使用對象化的方式避免了我們寫SQL,但是對於部分SQL,例如需要復雜的查詢、執行插入和刪除等可以操作,直接執行SQL可以減少減少性能上的損失。 使用EF執行SQL可以通過Execut
navicat下創建和執行存儲過程
logs nav cnblogs log ica http 存儲過程 -1 png navicat下創建和執行存儲過程
Mysql存儲過程和函數區別介紹
fill get .com href 參數 tle gravity 由於 target 原文鏈接 存儲過程是用戶定義的一系列sql語句的集合,涉及特定表或其它對象的任務,用戶可以調用存儲過程,而函數通常是數據庫已定義的方法,它接收參數並返回某種類型的值並且不涉及特定用戶表。
MySQL存儲過程和函數
-c com eat sql strong 沒有 round 函數 load data P176)存儲過程和函數的區別在於函數必須有返回值,而存儲過程沒有,存儲過程的參數可以使用IN、OUT、INOUT類型,而函數的參數只能指IN類型。如果有函數從其他類型的數據庫遷移到My
oracle存儲過程和存儲函數&觸發器
員工 觸發器的類型 table 序列 ger set 備份 oracl return oracle存儲過程和存儲函數 指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程,存儲函數 存儲過程和存儲函數的相同點:完成特定功能的程序 存儲過程和存儲函數的區別:是否用return
存儲過程不返回記錄集導致ADO程序出錯
sad () cad csdn博客 dset cts ref seo open HRESULT _hr = get_adoEOF(&_result); IsEOF()函數如下:其中ADOCG::_RecordsetPtr m_pRecordset; BOOL I
【SQL server基礎】SQL存儲過程和函數的區別
lan 嵌入 執行計劃 臨時 roc 沒有 存在 exe execution 本質上沒區別。只是函數有如:只能返回一個變量的限制。而存儲過程可以返回多個。而函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。執行的本質都一樣。 函數限制比較多
oracle函數和存儲過程有什麽區別
以及 插入數據 應該 部分 思維 必須 等級 中一 func oracle函數和存儲過程有什麽區別 1. 返回值的區別,函數有1個返回值,而存儲過程是通過參數返回的,可以有多個或者沒有 2.調用的區別,函數可以在查詢語句中直接調用,而存儲過程必須單獨調用. 函數
Oracle數據庫基礎--存儲過程和函數
9.png edi 語句 內容 upd 遊標 window 關鍵字 express 一、存儲過程和函數 存儲過程: 對一個模塊的封裝 函數: 功能與存儲過程幾乎一樣 區別: 函數必須通過return 關鍵字返回一個值 存儲過程: 不需
MySQL視圖view/存儲過程和函數的使用
variables mysq tab sql語句 用戶 前綴 機制 聚合 2.0 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { m