Tôi đang thực hiện một số thử nghiệm trên máy chủ sql và tôi muốn có được tốc độ chèn tốt nhất có thể. Tuyên bố tôi sử dụng là một cái gì đó như thế này:Sql chèn tốc độ lên
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
Có 25 cột; hầu hết trong số đó là loại bigint hoặc int.
Tôi đã xóa tất cả các chỉ mục khỏi bảng đích trừ khóa chính là trường nhận dạng.
Bất kỳ mẹo nào về cách cải thiện hiệu suất nhiều hơn?
P.s. Ở dạng này tôi có tốc độ trung bình 16.000 hàng/giây.
'dbo.udf_convert_hex_to_dec' đang giết chết bạn. Bạn đang sử dụng phiên bản SQL Server nào? Có tích hợp để thực hiện chuyển đổi này. – Yuck
Tôi đang nghi ngờ tại hàm 'udf_convert_hex_to_dec'. Chèn chỉ có thể được thực hiện nhanh hơn đến một điểm, một số yếu tố là chỉ số và hiệu suất IO vật lý.Chạy một phân tích truy vấn đối với nó, tôi đặt cược chọn là phần chậm vì chức năng. –
Chức năng do người dùng xác định có thể chậm. Bạn có thể không đưa hex trực tiếp vào thập phân - CAST (col9 AS Decimal (4)) chẳng hạn>? – Simon