關於 VS 呼叫儲存過程載入很慢和SQL 執行很快的那些事
執行同樣的儲存過程,呼叫同樣的引數
在VS 中呼叫儲存過程和傳參後,到資料載入需要20秒或更多,
在SQL直接呼叫則不到一秒,同一個儲存過程為什麼有這麼大的區別呢?
原因:儲存過程計劃失效的原因
產生原因:儲存過程涉及到的物件表結構發生改變或資料量發生大的變化。
解決方案1:
1、重啟資料庫服務
2、執行exec sp_recompile @objname='儲存過程名稱'
3、重新執行一次儲存過程
解決方案2:
使用 WITH
RECOMPILE 每次執行都編譯儲存過程
對於不經常使用的SQL,可以使用這種方案
例子:
ALTER PROCEDURE [dbo].[Proc_test] WITH RECOMPILE
相關推薦
關於 VS 呼叫儲存過程載入很慢和SQL 執行很快的那些事
執行同樣的儲存過程,呼叫同樣的引數 在VS 中呼叫儲存過程和傳參後,到資料載入需要20秒或更多, 在SQL直接呼叫則不到一秒,同一個儲存過程為什麼有這麼大的區別呢? 原因:儲存過程計劃失效的原因 產生原因:儲存過程涉及到的物件表結構發生改變或資料量發生大的變化。 解決方案1: 1、重啟資料
pl/sql developer中用execute呼叫儲存過程彈出‘無效的sql語句’解決方法
--------建立儲存過程------- create or replace procedure GetUserAccout as tatle number(10); begin
WITH RECOMPILE和OPTION(RECOMPILE)區別僅僅是儲存過程級重編譯和SQL語句級重編譯嗎
在考慮重編譯T-SQL(或者儲存過程)的時候,有兩種方式可以實現強制重編譯(前提是忽略導致重編譯的其他因素的情況下,比如重建索引,更新統計資訊等等), 一是基於WITH RECOMPILE的儲存過程級別重編譯,另外一種是基於OPTION(RECOMPILE)的語句級重編譯。 之前瞭解的比較淺,
《技術男征服美女HR》—Fiber、Coroutine和多執行緒那些事
![img](https://img.nopassby.com/20201204/11l6_c24aad10870a28296f28558b39e6c155_900x436.jpeg) ## 1、起點 我叫小白,坐在這間屬於華夏國超一流網際網路公司企鵝巴巴的小會議室裡,等著技術面試官的到來。 令我感到不
MySql儲存過程中傳參和不傳參以及java中呼叫程式碼
資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product
在PL/SQL Developer和oracle中如何新建儲存過程並呼叫儲存過程
1、新建程式視窗,選擇Procedure 2、寫入procedure以後,要執行程式進行編譯 3、編譯成功以後,有三種方法可以執行procedure 第一種是在命令視窗執行exec procedure name SQL> exec procedure_name();
儲存過程的使用和基礎語法,以及.Net呼叫儲存過程的方法
1、儲存過程的概念 儲存過程是一組為了完成特定功能的SQL語句集,儲存在資料庫中,經過第一次呼叫編譯後,再次呼叫不需要編譯。使用者通過指定儲存過程的名字並給出引數 (如果該儲存過程帶有引數) 來執行它 , 儲存過程是資料庫中的一個重要物件 ; 儲存過程中可以包含 邏輯控制語句 和 資料操
建立和呼叫儲存過程:查詢Stu資料庫中某個同學的選修課程的資訊,包括學號,姓名,課程名稱,成績
CREATE PROCEDURE proc_select--建立儲存過程 @Sno char(10) output,--輸入輸出引數 @Sname varchar(20) out,--輸出引數 @Cno char(4) out,--輸出引數 @grade tinyint
呼叫儲存過程一次後,程式崩潰 (臨時表和表變數)
編寫了一個顯示資料的儲存過程,前臺視窗首次呼叫顯示資料正常,退出再次進入該視窗是程式崩潰 原因是:不要使用臨時表#temp,最好使用表變數@temp 我的簡單理解即使你在儲存過程中刪除了臨時表,但是也會導致程式出錯 下面深刻認識一下臨時表和表變數吧
JDBC呼叫儲存過程和函式
JDBC呼叫儲存過程和函式 在資料庫中我們可以寫一些儲存過程和函式,來封裝一些常用的SQL語句,儲存過程和函式目的是為了可重複地執行操作資料庫的sql語句的集合 返回值上: 儲存過程的返回值,可以有多個值 函式的返回值,只有一個值 函式是可以嵌入在S
php和mysql原生呼叫儲存過程程式碼段
<?php $sql = <<<sql DELIMITER $ DROP PROCEDURE IF EXISTS `ss`$ CREATE DEFINER=`root`@`localhost` PROCEDURE `ss`() BEGIN IF NO
關於sqlhelper呼叫儲存過程和獲取引數返回值
SQLHelper類給我們操作資料庫提供了便利,有些人說,SqlHelper類執行儲存過程無法獲取引數的返回值,這個認識是錯誤的。 SqlHelper類呼叫儲存過程的方法有下面類似的兩種型別:public static int ExecuteNonQuery(string connectionString,
oracle PLSQL建立和呼叫儲存過程
我是在PLSQL的command window裡使用的命令建表 drop table students; create table students(ID int,userName varchar(100),userpass varchar(100),userAge int)
oracle呼叫儲存過程和函式返回結果集
在程式開發中,常用到返回結果集的儲存過程,這個在MySQL和sql server 裡比較好處理,直接返回查詢結果就可以了,但在Oracle裡面 要 out 出去,就多了一個步驟,對於不熟悉的兄弟們還得出上一頭汗:),這裡我簡單介紹一下,以供參考, 1 定義包
Java程式碼呼叫儲存過程和儲存方法
準備一個oracle 的JDBC jar 包:ojdbc14_11g.jar 首先找到你的 oracle 安裝位置,例如: 1.建立一個JDBC資料庫連線工具類: package com.test
【Oracle】-call 和 exec呼叫儲存過程的區別
在cmd.exe視窗執行命令sqlplus / as sysdba啟動sqlplus exec是sqlplus的命令,只能在sqlplus中使用。 call是sql命令,任何工具都可以使用,c
Oracle建立和呼叫儲存過程,函式,檢視
【1】Oracle建立和呼叫儲存過程1:寫一個簡單的例子刪除三級級聯 1)create or replace procedure ww_procedure_servicecheck (V_ID IN NUMBER)-- 定義輸入變數 IS begin DELETE
MyBatis中呼叫儲存過程和函式
一.呼叫儲存過程 1.首先在資料庫中定義儲存過程,定義的儲存過程的程式碼如下: //定義儲存過程create or replace procedure pag_add(p1 varchar2,p2 varchar2,p3 out varchar2) as begin
ADO.NET系列之事務和呼叫儲存過程
ADO.NET系列之Connection物件 ADO.NET系列之Command物件 ADO.NET系列之DataAdapter物件 ADO.NET系列之事務和呼叫儲存過程 &nbs
EF和LINQ 呼叫儲存過程
好久沒有更新文章了,最近專案比較忙都沒什麼時間來分享最近的問題。 今天遇到一個超級傻逼的問題。C#中呼叫儲存過程,自己code也10來年了,這應該是很簡單的問題了。今天有2個新的api,一個只有1個引數, 一個有10多個引數,先前沒有注意到物件型別, 以為是EF的DbCon