1. 程式人生 > >SQL Server 批量插入資料的兩種方法

SQL Server 批量插入資料的兩種方法

      在SQL Server 中插入一條資料使用Insert語句,但是如果想要批量插入一堆資料的話,迴圈使用Insert不僅效率低,而且會導致SQL一系統效能問題。下面介紹SQL Server支援的兩種批量資料插入方法:Bulk和表值引數(Table-Valued Parameters)。

執行下面的指令碼,建立測試資料庫和表值引數。

下面我們使用最簡單的Insert語句來插入100萬條資料,程式碼如下:

耗時圖如下:

使用Insert語句插入10萬資料的耗時圖

由於執行過慢,才插入10萬條就耗時72390 milliseconds,所以我就手動強行停止了。

下面看一下使用Bulk插入的情況:

bulk方法主要思想是通過在客戶端把資料都快取在Table中,然後利用SqlBulkCopy一次性把Table中的資料插入到資料庫

程式碼如下:

耗時圖如下:

使用Bulk插入100萬資料的耗時圖

可見,使用Bulk後,效率和效能明顯上升。使用Insert插入10萬資料耗時72390,而現在使用Bulk插入100萬資料才耗時17583。

最後再看看使用表值引數的效率,會另你大為驚訝的。

表值引數是SQL Server 2008新特性,簡稱TVPs。對於表值引數不熟悉的朋友,可以參考最新的book online,我也會另外寫一篇關於表值引數的部落格,不過此次不對錶值引數的概念做過多的介紹。言歸正傳,看程式碼:

耗時圖如下:

使用表值引數插入100萬資料的耗時圖

比Bulk還快5秒。