Entity Framework + MySQL - Warum ist die Leistung so schrecklich?

Als ich mich entschied, ein OR / M (Entity Framework für MySQL) für mein neues Projekt zu verwenden, hoffte ich, dass es mir Zeit spart, aber ich habe es anscheinend gescheitert (jetzt zum zweiten Mal).

Nehmen Sie diese einfache SQL-Abfrage

SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50 

Es wird ausgeführt und gibt mir Ergebnisse in weniger als einer Sekunde, wie es sollte (die Tabelle hat ungefähr 60.000 Zeilen).

Hier ist die entsprechende LINQ To Entities-Abfrage, die ich dazu geschrieben habe

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

Diese Abfrage wird jedoch niemals IMMER ausgeführt (ohne Reihenfolge dauert die Ausführung 5 Sekunden)! Mein Timeout ist auf 12 Sekunden eingestellt, Sie können sich also vorstellen, dass es viel länger dauert.

Warum passiert dies?Gibt es eine Möglichkeit, die tatsächliche SQL-Abfrage zu ermitteln, die Entity Framework an die Datenbank sendet?Sollte ich EF + MySQL aufgeben und auf Standard-SQL umsteigen, bevor ich die Ewigkeit verliere und versuche, es zum Laufen zu bringen?

Ich habe meine Indizes neu kalibriert und versucht, sie eifrig zu laden (was dazu führt, dass sie auch ohne die orderby-Klausel fehlschlägt).

Bitte helfen Sie, ich bin im Begriff, OR / M für MySQL als verlorene Sache aufzugeben.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage