Một vài ý tưởng / lý thuyết:
CHỌN VÀO ... cho phép RDBMS xác định thứ tự sắp xếp dựa trên thứ tự của bảng gốc của bạn. Nếu bạn chèn vào một bảng hiện có, có thể có một loại cần thiết để khớp với (các) chỉ mục được nhóm hoặc không tách rời.
Không có chỉ mục - khi bạn SELECT INTO...biết RDBMS chắc chắn không có chỉ mục tồn tại trước để cập nhật.
Không có sự can thiệp - vì bảng bạn đang chèn không tồn tại, SQL Server không cần phải lo lắng về việc khóa cấp hàng hoặc xử lý tranh chấp. Không có gì khác có thể tham chiếu bảng bạn tạo vì nó không tồn tại.
Tất cả những gì đang được nói, có những cách khác để chèn vào một bảng rất nhanh.
Hãy chắc chắn rằng các khóa chỉ mục được nhóm của bạn khớp với nhau khi có thể. Điều này có nghĩa là không có sự sắp xếp nhanh chóng
Vô hiệu hóa tất cả các chỉ mục không cụm. Tự giải thích.
Đặt chế độ khôi phục thành đơn giản và theo dõi cờ 610 thành ON. Sử dụng TABLOCKgợi ý trên bảng mục tiêu của bạn và NOLOCKgợi ý trên bảng nguồn của bạn.
Ví dụ: giả sử tablea và tableb có cùng chỉ mục được nhóm:
INSERT INTO TableB WITH (TABLOCK)
SELECT <Columns>
FROM TableA WITH (NOLOCK)
Theo kinh nghiệm của tôi, điều này nhanh hơn việc sử dụng SELECT INTO...và sau đó tạo ra chỉ mục cụm. Xin lưu ý rằng điều này cũng có thể hoạt động trên một bảng đã có dữ liệu trong đó là một kịch bản hữu ích hơn nhiều.
BIÊN TẬP:
Đây là một whitepaper chi tiết tuyệt vời từ MS cho hiệu suất tải dữ liệu trong Sql Server 2008.