成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

下面為您介紹批處理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();


}

 

【編輯推薦】

SQL語句中特殊字符的處理方法

教您用SQL語句進行模糊查詢

為您講解SQL動態語句的語法

SQL2005中的RANK、DENSE_RANK排名函數

SQL中隨機數函數rand()簡介

責任編輯:段燃 來源: 博客園
相關推薦

2009-07-21 15:47:35

JDBC批處理

2010-04-30 14:14:11

Oracle提高SQL

2011-03-21 15:51:27

SQL執行效率

2010-04-29 15:43:17

2010-09-25 16:21:41

SQL語句

2010-05-07 12:53:50

Oracle提高SQL

2009-10-29 11:18:47

ADO.NET SQL

2010-09-06 13:41:42

sql server語句

2010-08-27 14:54:21

DB2批處理腳本

2010-04-13 15:14:31

Oracle優化

2010-03-31 15:03:54

Oracle執行

2010-09-07 10:19:31

SQL語句

2010-06-30 13:49:02

SQL Server數

2010-09-07 14:50:15

SQL語句

2010-09-08 15:00:03

SQL語句執行

2010-11-15 16:46:49

Oracle查詢效率

2010-11-12 11:25:44

SQL SERVER視

2010-10-27 14:15:44

Oracle數據庫效率

2015-04-16 10:15:45

PHPPHP執行效率PHP技巧

2010-07-07 10:02:46

SQL Server數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美在线免费观看 | 国产99免费视频 | 色婷婷av一区二区三区软件 | 久久不卡 | 91看片网 | 日韩在线中文 | 在线一区视频 | 成人精品久久日伦片大全免费 | 欧美久操网 | 九九久久精品 | 99精品电影| 久草视频在线播放 | 国产视频一区在线 | 天堂av中文在线 | 丝袜天堂| 在线观看av网站永久 | 在线精品一区 | 亚洲精品国产电影 | 久久午夜视频 | 久久国产精99精产国高潮 | 中文字幕一区二区三区在线乱码 | www.yw193.com| 99精品欧美 | 亚洲第一天堂 | 欧美一级黄带 | 日韩一区二区在线看 | 国产免费一级片 | 久久99蜜桃综合影院免费观看 | 成人免费视频观看视频 | 国产精品视频999 | 毛片a级| 韩日一区 | 99久久婷婷国产精品综合 | 热久久久久| av黄色在线观看 | 祝你幸福电影在线观看 | 国产精品91网站 | 国产精品美女久久久 | 亚洲丝袜天堂 | 久久成人免费视频 | av黄色在线|