公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

批處理SQL語句的執(zhí)行效率提高的方法

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

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


如果你的項目要求你的程序?qū)Ω哌_幾萬條的數(shù)據(jù)在集中的時間內(nèi)執(zhí)行固定序列的操作,且不能完全使用存儲過程時而需要使用程序來執(zhí)行時。會需要這些優(yōu)化。


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


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


如果執(zhí)行一批語句,在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;
     相信這樣做之后,你的效率會有幾倍或者十幾倍的提升。當然,你還可以對只是查而修改的表,做一下緩存處理,來減小訪問數(shù)據(jù)庫的次數(shù)。
     下面我示例一下訪問Oracle執(zhí)行PLSQL的一個函數(shù)的例子:
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();
    }


//設(shè)置參數(shù)
    cmd.Parameters["instanceId"].Value =  flowinstanceid;


//設(shè)置事務(wù)
    cmd.Transaction = this.tranEngine;


cmd.ExecuteNonQuery();


}


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

主站蜘蛛池模板: 国产美女18网 | 国产精品免费观看视频 | 精品人妻无码一区二区三区换脸 | 91精品国产社区 | 2025年最新无码国产在线视频 | 国产福利片无码区在线观看 | av无码一区二区大桥未久 | av忘忧草18| 丰满白嫩尤物一区二区 | 国产一区二区三区视频在线看 | 国产欧美日韩亚洲更新 | 国产精品蜜臀 | 国产成人网站免费一区二区 | 成人无码专区免费 | 99久久精品国产一区二区麻豆 | 国产精品人人爽人人做我的 | 91人妻视频| 爆乳在线观看无码av | 岛国在线观看无码不卡 | 成人无码区免费视频网站蜜臀 | 国产精品视频一区二区 | 国产午夜无码精品免费看动漫 | 国产精品无码毛片久久久 | 国产综合无码一区二区辣椒 | 91精品自在拍 | 91模特| 91亚洲中文天堂在线观看 | 东京热日韩无码高清国产精品 | av无码高潮免费 | 国产亚洲欧美一区二区三区在线播放 | 国产熟女丝袜高跟视频 | 精品无人区乱码一区二区 | 国产午夜不卡精品午夜电影 | 91精品国产免费久久久久 | 观看一区二区 | 国产视频一区二区高清免费 | 岛国在线观看无码不卡 | 成人动漫免费看一区二区三区 | 精品人妻中文一区二区中文 | 99国产精品丝袜久久久久 | 国产精品三级手 |