我在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