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

Số lượng lõi của Entity Framework không có hiệu suất tối ưu

Không có nhiều điều để trả lời ở đây. Nếu công cụ ORM của bạn không tạo ra truy vấn SQL như mong đợi từ một truy vấn LINQ đơn giản, thì không có cách nào bạn có thể để nó làm điều đó bằng cách viết lại truy vấn (và bạn không nên làm điều đó ngay từ đầu).

EF Core có khái niệm về đánh giá máy khách / cơ sở dữ liệu hỗn hợp trong các truy vấn LINQ điều này cho phép họ phát hành các phiên bản EF Core với xử lý truy vấn không đầy đủ / rất kém hiệu quả như trong trường hợp của bạn.

Trích từ Các tính năng không có trong EF Core (lưu ý từ không ) và Lộ trình :

Trong thời gian ngắn, họ đang có kế hoạch cải thiện việc xử lý truy vấn, nhưng chúng tôi không biết khi nào điều đó sẽ xảy ra và mức độ như thế nào (hãy nhớ rằng chế độ hỗn hợp cho phép họ coi truy vấn là "hoạt động").

Vậy các tùy chọn là gì?

  • Đầu tiên, hãy tránh xa EF Core cho đến khi nó thực sự hữu ích. Quay lại EF6, nó không có vấn đề như vậy.
  • Nếu bạn không thể sử dụng EF6, hãy cập nhật phiên bản EF Core mới nhất.

Ví dụ:trong cả v1.0.1 và v1.1.0, bạn truy vấn sẽ tạo ra SQL dự định (đã thử nghiệm), vì vậy bạn có thể chỉ cần nâng cấp và vấn đề cụ thể sẽ không còn nữa.

Nhưng lưu ý rằng cùng với những cải tiến, các bản phát hành mới giới thiệu lỗi / hồi quy (như bạn có thể thấy ở đây EFCore trả về quá nhiều cột cho một phép kết hợp LEFT OUTER đơn giản chẳng hạn), vì vậy hãy tự chịu rủi ro (và hãy cân nhắc lại lựa chọn đầu tiên, tức là Cái nào phù hợp với 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. Làm cách nào để tính tổng số đang chạy trong SQL mà không sử dụng con trỏ?

  2. Giống như Operator trong Entity Framework?

  3. LINQ to SQL mỗi hàng thứ N từ bảng

  4. Làm cách nào để sao lưu cơ sở dữ liệu SQL Server từ xa vào ổ đĩa cục bộ?

  5. Cài đặt từng bước SQL Server 2017 -2