Kiedy zdecydowałem się użyć OR/M (Entity Framework dla MySQL tym razem) dla mojego nowego projektu miałem nadzieję, że zaoszczędzi mi to czasu, ale wydaje mi się, że zawiodłem (po raz drugi teraz).Entity Framework + MySQL - Dlaczego wydajność jest tak straszna?
Weź ten prosty SQL Query
SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50
Wykonuje i daje mi wyniki w mniej niż sekundę, tak jak powinien (tabela ma około 60000 wierszy).
Oto odpowiednik LINQ podmiotom zapytania, które napisałem dla tego
var 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
Ale ta kwerenda nawet nie wykonuje go razy out ZAWSZE (bez orderby trwa 5 sekund, aby uruchomić)! Mój limit czasu jest ustawiony na 12 sekund, więc możesz sobie wyobrazić, że zabiera on znacznie więcej.
- Dlaczego tak się dzieje?
- Czy istnieje sposób, aby zobaczyć, jakie jest rzeczywiste zapytanie SQL, które Entity Framework wysyła do bazy danych?
- Czy powinienem zrezygnować z EF + MySQL i przejść do standardowego SQL, zanim stracę całą wieczność, próbując sprawić, żeby działało?
Mam skalibrowany moje indeksy, próbował chętny do załadunku (które w rzeczywistości sprawia, że nie nawet bez klauzuli orderby)
Proszę o pomoc, mam zamiar zrezygnować OR/M dla MySQL jako przegrana przyczyna.
Cóż, porzuciłem i wyrzuciłem EF + MySQL –