Khi tôi quyết định sử dụng OR/M (Entity Framework cho MySQL lần này) cho dự án mới của tôi, tôi hy vọng nó sẽ tiết kiệm thời gian cho tôi, nhưng dường như tôi đã thất bại (lần thứ hai).Entity Framework + MySQL - Tại sao hiệu suất lại khủng khiếp như vậy?
Hãy truy vấn này SQL đơn giản
SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50
Nó thực hiện và mang lại cho tôi kết quả trong vòng chưa đầy một giây như mong muốn (bảng có khoảng 60.000 dòng).
Đây là LINQ tương đương to Entities truy vấn mà tôi đã viết cho
nàyvar q = (from p in db.post
orderby p.addedOn descending
select p).Take(50);
var q1 = q.ToList(); //This is where the query is fetched and timed out
Nhưng truy vấn này không bao giờ thậm chí thực hiện nó lần ra LUÔN (không orderby phải mất 5 giây để chạy)! Thời gian chờ của tôi được đặt thành 12 giây để bạn có thể tưởng tượng thời gian chờ nhiều hơn thế.
- Tại sao điều này xảy ra?
- Có cách nào tôi có thể thấy Truy vấn SQL thực tế mà Khung thực thể đang gửi tới db không?
- Tôi có nên từ bỏ EF + MySQL và chuyển sang SQL chuẩn trước khi tôi mất tất cả vĩnh cửu để làm cho nó hoạt động không?
Tôi đã được tái kiểm định chỉ số của tôi, cố gắng tải háo hức (mà thực sự làm cho nó thất bại ngay cả khi không mệnh đề orderby)
Hãy giúp đỡ, tôi sắp bỏ HOẶC/M cho MySQL như một mất nguyên nhân.
Vâng, tôi đã từ bỏ và loại bỏ EF + MySQL –