Quando ho deciso di utilizzare un OR/M (Entity Framework per MySQL questa volta) per il mio nuovo progetto speravo che mi avrebbe risparmiato tempo, ma mi sembra di averlo fallito (per la seconda volta ora).Entity Framework + MySQL - Perché le prestazioni sono così terribili?
prendere questa semplice query SQL
SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50
Esegue e mi dà i risultati in meno di un secondo come si deve (la tabella contiene circa 60.000 righe).
Ecco il LINQ equivalente a interrogazione Entità che ho scritto per questo
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
Ma questa query mai esegue il tempo è scaduto SEMPRE (senza orderby ci vogliono 5 secondi per l'esecuzione)! Il mio timeout è impostato su 12 secondi, quindi puoi immaginare che ci voglia molto di più.
- Perché sta succedendo?
- C'è un modo per vedere qual è la query SQL effettiva che Entity Framework invia al db?
- Dovrei rinunciare a EF + MySQL e passare allo standard SQL prima di perdere l'eternità cercando di farlo funzionare?
ho ricalibrato i miei indici, tentarono eager loading (il che rende di fatto fallire anche senza la clausola orderby)
prega di aiuto, sto per rinunciare o/M per MySQL come perduta causa.
Bene, ho rinunciato e scartato EF + MySQL –