溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • 如何通過C#使用參數化和塊語句來提高批處理SQL語句的執(zhí)行效率

如何通過C#使用參數化和塊語句來提高批處理SQL語句的執(zhí)行效率

發(fā)布時間:2021-10-13 14:34:24 來源:億速云 閱讀:111 作者:柒染 欄目:數據庫

本篇文章給大家分享的是有關如何通過C#使用參數化和塊語句來提高批處理SQL語句的執(zhí)行效率,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 當你的項目要求你的程序對高達幾萬條的數據在集中的時間內執(zhí)行固定序列的操作,且不能完全使用存儲過程時而需要使用程序來執(zhí)行時。會需要這些優(yōu)化。    我們知道,SQL服務器對一條語句的執(zhí)行,需要分析、編譯、執(zhí)行這些步驟,通過參數化我們可以對一種命令只分析和編譯一次,而執(zhí)行多次,從而提高效率。在執(zhí)行時,如果每次提交語句,可以完成多條SQL語句,則可以減少通訊時間,也可以提高效率。
    通過 System.Data.IDbCommand.Prepare() 方法,可以在第一次執(zhí)行語句時,分析和編譯SQL語句,然后保存這個Command對象,下次使用時,直接設置參數執(zhí)行。這個方法對Oracle和MsSql Server都有效。
    如果執(zhí)行一批語句,在T-SQL和PLSQL中有一點不一樣。

在T-SQL中,多條SQL語句之間,使用分號";"分隔就行。

而在PLSQL中,則需要用 begin ... end; 包起來,中間語句用分號";"分隔。??Q3kmìLJ?www.netcsharp.cnú????7?ùm

相信這樣做之后,你的效率會有幾倍或者十幾倍的提升。當然,你還可以對只是查而修改的表,做一下緩存處理,來減小訪問數據庫的次數。

下面我示例一下訪問Oracle執(zhí)行PLSQL的一個函數的例子

sb.Append(@"delete from bak_WF_Log_EngineLog where FlowInstanceID= :instanceId;");
sb.Append(@"delete from bak_WF_Log_ErrLog where FlowInstanceID= :instanceId;");
sb.Append(@"delete from WF_Running_MsgForEngineBak where FlowInstanceID= :instanceId;");
sb.Append(@"delete from bak_WF_Running_MsgForUser where FlowInstanceID= :instanceId;");
sb.Append(@"delete from bak_WF_Running_FlowActivity where FlowInstanceID= :instanceId;");
sb.Append(@"delete from bak_WF_Running_FlowData where FlowInstanceID= :instanceId;");
sb.Append(@"delete from bak_WF_Running_FlowInstance where FlowInstanceID= :instanceId;");

sb.Append("end;");

//準備 DbCommand
this.cmdDeleteFlowInstanceData = cmd = new OracleCommand();
cmd.Connection = this.connEngine;
cmd.CommandType = CommandType.Text;
cmd.CommandText = sb.ToString();
cmd.Parameters.Clear();
cmd.Parameters.Add("instanceId", OracleType.VarChar,250);

//準備一下以提高性能。
cmd.Prepare();
}

//設置參數
cmd.Parameters["instanceId"].Value =  flowinstanceid;

//設置事務
cmd.Transaction = this.tranEngine;

cmd.ExecuteNonQuery();

}
 
  

以上就是如何通過C#使用參數化和塊語句來提高批處理SQL語句的執(zhí)行效率,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI