Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Truy vấn SQL giống nhau mất nhiều thời gian hơn để chạy trong một DB so với một DB khác trong cùng một máy chủ

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có bất kỳ vấn đề về Hiệu suất nào khi sử dụng ISNULL () trong SQL Server không?

  2. Làm cách nào để tạo một bảng dựa trên một bảng khác

  3. Truy vấn Linq không hoạt động như mong đợi

  4. Triển khai tải gia tăng bằng cách sử dụng Thay đổi tính năng thu thập dữ liệu trong SQL Server

  5. Nhận tất cả các điểm (hình tròn có bán kính), điểm đó trùng với điểm đã cho