TVP批量插入資料

2021-07-04 20:57:46 字數 779 閱讀 2785

錶值引數具有更高的靈活性,在某些情況下,可比臨時表或其他傳遞引數列表的方法提供更好的效能。錶值引數具有以下優勢:   

(1)首次從客戶端填充資料時,不獲取鎖。 

(2)提供簡單的程式設計模型。  

(3)允許在單個例程中包括複雜的業務邏輯。 

(4)減少到伺服器的往返。  

(5)可以具有不同基數的表結構。   

(6)是強型別。   

(7)使客戶端可以指定排序順序和唯一鍵。     

錶值引數有下面的限制: 

(1) sql server 不維護錶值參數列的統計資訊。 

(2) 錶值引數必須作為輸入 readonly 引數傳遞到 transact-sql 例程。 

不能在例程體中對錶值引數執行諸如 update、delete 或 insert 這樣的 dml 操作。 ***如果想要修改那些已經傳入到儲存過程或引數化語句中的錶值型引數中的資料,只能通過向臨時表或表變數中插入資料來實現。 

(3) 不能將表值引數用作 select into 或 insert exec 語句的目標。 

錶值引數可以在 select into 的 from 子句中,也可以在 insert exec 字串或儲存過程中。

自己寫**實驗了一下tvp跟普通sp的效率,發現確實效能提公升很大。

插入10000條資料,tvp只用了0.421s,而普通sp則用了77s,不是乙個數量級呀

注意:錶值引數增加列時,**中傳入的datatable的構建也要做相應的修改,列數必須保持完全一致,否則會報錯。

批量插入資料

drop procedure if exists pre 如果存在先刪除 delimiter 以delimiter來標記用 表示儲存過程結束 create procedure pre 建立pre 儲存方法 begin declare i int default 12 declare n int de...

JDBC批量插入資料

一.直接上源 以匯入課表資料為例 批量插入新申請 匯入預設課表 throws sqlexception catch sqlexception e int number ps.executebatch 把剩餘的資料插入 conn.commit 手動提交事務 try catch sqlexception...

批量插入資料 Oracle

在使用 oracle 開發期間,或許我們會為編寫一條一條插入語句而困惱,這裡給出 對資料表進行簡單批量插入的例子。以下均是oracle 資料庫操作 insert into cbay user t userid,username,password,userage select test1 test1 ...