Thực tế là bạn có hai cơ sở dữ liệu trên cùng một máy chủ và với cùng một tập dữ liệu (như bạn đã nói) không đảm bảo kế hoạch thực thi giống nhau.
Dưới đây là một số lý do khiến kế hoạch truy vấn có thể khác:
- tệp mdf và ldf (cho mỗi cơ sở dữ liệu) nằm trên các ổ đĩa khác nhau. Nếu quá trình chạy nhanh hơn, cơ sở dữ liệu đó cũng sẽ chạy truy vấn nhanh hơn.
- thống kê bị đình trệ. Nếu bạn có một cơ sở dữ liệu với số liệu thống kê mới hơn cơ sở dữ liệu kia, SQL có cơ hội tốt hơn để chọn một kế hoạch thực thi phù hợp (và
nhanh hơn). - Chỉ mục:Tôi biết bạn đã nói cả hai đều giống nhau, nhưng tôi sẽ kiểm tra xem bạn có cùng loại Chỉ mục trên cả hai hay không.
Tập trung vào xem tại sao truy vấn chạy chậm hoặc xem kế hoạch thực thi thực tế, thay vì so sánh. Kiểm tra kế hoạch thực thi thực tế cho truy vấn chậm sẽ cung cấp cho bạn một gợi ý về lý do tại sao chạy chậm hơn.
Ngoài ra, tôi sẽ không thêm câu lệnh KHÔNG KHÓA để khắc phục sự cố. Theo kinh nghiệm của tôi, hầu hết các truy vấn chậm có thể được điều chỉnh thông qua mã hoặc Chỉ mục, thay vì thêm gợi ý KHÔNG KHÓA có thể khiến bạn sửa đổi hoặc tập hợp kết quả cũ, tùy thuộc vào giao dịch của bạn.