日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

批處理SQL語句的執行效率提高的方法

admin
2011年5月4日 15:20 本文熱度 3462

下面為您介紹批處理SQL語句的執行效率提高的方法,供您參考,如果您在大量數據集中執行操作的優化方面遇到過問題,不妨一看,相信會對您學習SQL語句的優化會大有幫助。


如果你的項目要求你的程序對高達幾萬條的數據在集中的時間內執行固定序列的操作,且不能完全使用存儲過程時而需要使用程序來執行時。會需要這些優化。


我們知道,SQL服務器對一條語句的執行,需要分析、編譯、執行這些步驟,通過參數化我們可以對一種命令只分析和編譯一次,而執行多次,從而提高效率。在執行時,如果每次提交語句,可以完成多條SQL語句,則可以減少通訊時間,也可以提高效率。


通過 System.Data.IDbCommand.Prepare() 方法,我們可以在第一次執行語句時,分析和編譯SQL語句,然后保存這個Command對象,下次使用時,直接設置參數執行。這個方法對Oracle和MsSql Server都有效。


如果執行一批語句,在T-SQL和PLSQL中有一點不一樣。


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


delete from TableA where id = @id;update TableB set Name=@name where id=@id
 
而在PLSQL中,則需要用 begin ... end; 包起來,中間語句用分號";"分隔。


begin delete from TableA where id = :id;update TableB set Name=:name where id=:id; end;
     相信這樣做之后,你的效率會有幾倍或者十幾倍的提升。當然,你還可以對只是查而修改的表,做一下緩存處理,來減小訪問數據庫的次數。
     下面我示例一下訪問Oracle執行PLSQL的一個函數的例子:
private void DeleteFlowInstanceData(string flowinstanceid)
{
    OracleCommand cmd = this.cmdDeleteFlowInstanceData;
    if(cmd == null)
    {
        //生成SQL
        StringBuilder sb = new StringBuilder();
        sb.Append("begin ");


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();


}


該文章在 2011/5/4 15:20:59 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品一区二区高清在线 | 91香蕉国产线在线观看免费 | 成人日动漫卡一区二区三区动漫 | 日本中文字幕在线播放第1页 | 第四色伊人 | 国语自产拍视频在线观看 | 成人国产在线视频 | 国产小视频在线高清播放 | 婷婷亚洲久悠悠色悠在线播放 | 最近日本字幕mv | 日韩欧美国产免费看 | 亚洲日本中文字幕乱码在线电影 | 私人影院午夜在线观看 | 国产黑色丝袜在线看片不卡顿 | 动漫精品无 | xxxx视频 | 亚洲第一夜页 | 亚洲人成电影在线小说网色 | 天美麻花星空视 | 精品国产女主播在线观看 | 日本黄页网站大 | 国产综合在线观看自拍 | 在线观看亚洲精品专区 | 亚洲欧美日韩精品自拍 | 欧美日韩国产综合视频在线观看 | 911精品中文在线播放永久 | 亚洲熟女综合一区二区三区 | 欧美经典日韩精品 | 又大又粗又黄又硬又爽又免费视 | 精品国产aⅴ | 成l人在线观看线路1 | 日本大片电影 | 亚洲第一网站a√在线观看 国产精品情侣 | 全黄裸片一29分钟免费真人版 | 又大又粗又硬又爽 | 偷拍一区 | 天天综合网天天综合 | 国产伦精品一区二区三区在 | а√天堂资 | 性一交一 | 亚洲福利中文字幕在线网址 |