SQL Server 批量插入資料的兩種方法
阿新 • • 發佈:2019-02-01
在SQL Server 中插入一條資料使用Insert語句,但是如果想要批量插入一堆資料的話,迴圈使用Insert不僅效率低,而且會導致SQL一系統效能問題。下面介紹SQL Server支援的兩種批量資料插入方法:Bulk和表值引數(Table-Valued Parameters)。
執行下面的指令碼,建立測試資料庫和表值引數。
下面我們使用最簡單的Insert語句來插入100萬條資料,程式碼如下:
耗時圖如下:
由於執行過慢,才插入10萬條就耗時72390 milliseconds,所以我就手動強行停止了。
下面看一下使用Bulk插入的情況:
bulk方法主要思想是通過在客戶端把資料都快取在Table中,然後利用SqlBulkCopy一次性把Table中的資料插入到資料庫
程式碼如下:
耗時圖如下:
可見,使用Bulk後,效率和效能明顯上升。使用Insert插入10萬資料耗時72390,而現在使用Bulk插入100萬資料才耗時17583。
最後再看看使用表值引數的效率,會另你大為驚訝的。
表值引數是SQL Server 2008新特性,簡稱TVPs。對於表值引數不熟悉的朋友,可以參考最新的book online,我也會另外寫一篇關於表值引數的部落格,不過此次不對錶值引數的概念做過多的介紹。言歸正傳,看程式碼:
耗時圖如下:
比Bulk還快5秒。