Tôi có một table1
trong db1
và table2
ở db2
trên SQL Server 2008 R2.
Nếu tôi thực hiện một truy vấn chọn tham gia cả hai bảng, sẽ rất chậm để có kết quả.
Một truy vấn đơn giản như
SELECT *
FROM db1.dbo.table1 t1
LEFT JOIN db2.dbo.table2 t2 ON t1.k1 = t2.k2
đôi khi thực sự chậm.
Tôi không chắc chắn nếu điều này là phổ biến đối với SQL Server và "phải giống như một quy tắc" để "không tham gia hai bảng từ các cơ sở dữ liệu khác nhau".
Trong trường hợp đó ... Tôi thêm vào câu hỏi này rằng tôi có một trong những dữ liệu nhị phân db được lưu trữ trên một trường và tôi muốn tách khỏi db chính để không tăng kích thước bảng chính ... tốt hơn là phân vùng db cho điều này ?
Tôi đã thử nghiệm với hai bảng đơn giản và vẫn tham gia hai bảng đó là chậm.
Cảm ơn trước sự giúp đỡ nào.
.. Cập nhật một số năm sau ... 24-09-18
hãy chắc chắn rằng các trường mà bạn đang tham gia có cùng loại, kích thước và đối chiếu.
Ví dụ: một số thuộc tính là varchar (255) và một varchar khác (20) ... đó có thể là một vấn đề vì động cơ phải truyền loại này sang loại khác (một chuyển đổi ngầm xảy ra) và trong khi đôi khi nó chạy nhanh hơn ... nếu a reindex hoặc một số thay đổi trong db xảy ra, bạn có thể thấy rằng trong một lúc nào đó, truy vấn bắt đầu mất nhiều thời gian hơn để hoàn thành ....
Nếu bạn không thể thay đổi loại trường để khớp với một trong các bảng db /, hãy thử thực hiện một biểu mẫu rõ ràng để xem điều đó có cải thiện tốc độ truy vấn không. sử dụng
cast(fieldname as type(size)) = fieldName2)