Cài đặt
Trong một nhà kho dữ liệu, tôi đang tham gia một bảng thực tế đến 20 chiều. Bảng thực tế có 32 triệu hàng và 30 cột. Đây là một bảng phân tầng tạm thời vì vậy tôi không phải đối phó với những người dùng khác đang đọc hoặc viết lên bàn. Tôi chọn 10 cột từ bảng cơ sở và 20 cột từ các kích thước tương ứng. Các bảng kích thước nhỏ (từ 3 đến 15.000 hàng). Các trường trên đó được nối là cả số nguyên và nvarchar. Tôi sử dụng câu lệnh CHỌN ... VÀO. Không có chỉ mục trên các bảng.
Tốc độ thực hiện của truy vấn này quá chậm không hữu ích.
Giải pháp đã thử
Vì truy vấn mất quá nhiều thời gian để xử lý, tôi đã thử các giải pháp sau:
- Chia 20 tham gia thành 4 tham gia trên 5 bảng. Hiệu suất truy vấn vẫn còn thấp.
- Đặt các chỉ mục trên các cột khóa ngoại. Không giảm thời gian đáng kể.
- Hãy chắc chắn rằng các trường của điều kiện nối là số nguyên. Tôi nhận thấy hiệu suất tăng 25%. Không hoàn toàn những gì tôi đang tìm kiếm.
- Sử dụng một câu lệnh chèn vào thay vì chọn vào. Hiệu suất tệ hơn vì tăng trưởng tệp nhật ký mặc dù cơ sở dữ liệu ở chế độ khôi phục đơn giản.
Những phát hiện này đã đưa tôi đến bao gồm cả kế hoạch thực hiện thực tế cho thấy 89% chi phí nằm trong phần chèn bảng . Các chi phí khác là quét bảng 8% trên bảng thực tế và 2% cho khớp băm cho các phép nối bên trong.
Câu hỏi
- Các lý do có thể của chèn bảng chậm là gì?
- Các cách để xác định nút cổ chai này mà không có kế hoạch thực hiện là gì?
- Tôi có thể làm gì để giảm chi phí chèn bảng?