我在sql server上執行一些測試,我想獲得最佳插入速度。 我使用的語句是這樣的:Sql插入加速
INSERT INTO db_Test_databse..tbl_test with(rowlock)
( joinid, date_key,
col1, col2,col3,col4, col5, col6, col7, col8, col9, col10, ...
)
SELECT tabid as joinid,
date_key,
rec_type,
col2,
dbo.udf_convert_hex_to_dec(col3),
col4, col5, col6, col7, col8,
dbo.udf_convert_hex_to_dec(col9),
dbo.udf_convert_hex_to_dec(col10),
...
from source_table f
有25列;其中大部分是bigint或int類型的。
我刪除了目標表中的所有索引,除了主鍵是一個標識字段。
有關如何提高性能的更多提示?
P.s.在這種形式下,我的平均速度爲16.000行/秒。
之前,你的店過程中使用'dbo.udf_convert_hex_to_dec'是殺你。你正在使用哪個版本的SQL Server?有內置的功能可以完成這種轉換。 – Yuck
我在懷疑'udf_convert_hex_to_dec'函數。插入只能更快地達到某個點,一些因素是索引和物理IO性能。針對它運行一個查詢分析器,我敢打賭,select是由於函數的緩慢部分。 –
用戶定義的函數可能很慢。你不能直接將十六進制轉換爲十進制 - CAST(col9 AS Decimal(4))例如>? – Simon