成人免费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語句

2009-10-29 11:18:47

ADO.NET SQL

2010-09-06 13:41:42

sql server語句

2010-05-07 12:53:50

Oracle提高SQL

2010-08-27 14:54:21

DB2批處理腳本

2010-03-31 15:03:54

Oracle執行

2010-04-13 15:14:31

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-07-07 10:02:46

SQL Server數

2011-08-29 10:08:04

SQL Server osqlocmd批處理

2015-04-16 10:15:45

PHPPHP執行效率PHP技巧
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美又大粗又爽又黄大片视频 | 伊人激情网 | 成人av色 | 亚洲国产精品一区二区久久 | 亚洲欧洲中文 | 成人午夜精品 | 成人av资源在线 | 成人免费在线观看 | 日韩在线中文 | 国产99久久精品一区二区永久免费 | 婷婷久久网 | 99精品国产一区二区青青牛奶 | 精国产品一区二区三区四季综 | 龙珠z国语版在线观看 | 人人射人人 | 久久人| 成人影院在线 | 亚洲国产精品成人 | 日韩av福利在线观看 | 精品视频一区二区三区在线观看 | 亚洲精品电影网在线观看 | 国产精品视频在线免费观看 | 女朋友的闺蜜3韩国三级 | 久久综合九色综合欧美狠狠 | 国产精品久久久久久久三级 | 日本中文在线 | 国产一级在线 | 亚洲高清免费 | 久久久毛片 | 日本三级全黄三级a | 99re超碰| 久久久久国产一区二区三区四区 | 99草免费视频| 免费成人在线网站 | 九九综合 | 99精品欧美 | 欧美精品乱码久久久久久按摩 | 亚洲成人一区 | 天天av综合 | 中文字幕亚洲精品 | www.亚洲视频|