Scheinbar einfache Abfrage sehr langsam auf Entity Framework

Also ich habe ein sehr einfaches Daten-Modell in meinem Projekt (targeting .NET 4.0, EF 5 NuGet installiert, die Datenbank zuerst), mit 2 Tabellen Artikel und Artikelgruppe.

Element-Tabelle hat verschiedene Felder, die beide string-und numerischen, und ein Fremdschlüssel verweist auf eine ItemGroup.

ItemGroup auf der anderen Seite hat nur Id, Name und Code (von denen die letzten 2 Saiten).

Nun, ich habe etwa 50k Items und nur 100 ItemGroups. Wenn ich ausführen ein context.Items.ToList() unter Verwendung von SQL Profiler, die Dauer ist etwa 2-3 Sekunden, das ist völlig in Ordnung. Wenn ich allerdings wollen, laden Sie die ItemGroups gleichzeitig mit context.Items.Include("ItemGroup").ToList(), der Zeitpunkt der Ausführung der Sprünge bis zu etwa 12 Sekunden. Auch, wenn ich einfach nur Holen die ItemGroups nachdem ich holte alle Gegenstände, die Ausführungszeit ist sehr lange, wie gut. Dies führt mich zu glauben, dass es die Zuordnung der Items zu Ihren jeweiligen Gruppen, die sich die Zeit nimmt.

Aber das erklärt immer noch nicht, warum SQL Profiler-Berichte die sehr einfache INNER-JOIN -Abfrage Einnahme von weit über 10 Sekunden als gut, im Vergleich zu der sehr gleiche Abfrage ohne JOIN unter einem mickrigen 2-3 Sekunden.

Ich bin ratlos hier, nie konfrontiert diese Art von problem vor, so dass jede Beratung ist mehr als willkommen.

  • 2-3 Sekunden für 100 Zeilen? Das scheint schlecht zu mir für ein start, was für eine Art von hardware laufen Sie auf?
  • Wenn ich die erste Abfrage nur die Gruppen, die Zeit, die Tropfen zu Millisekunden. Ich denke, es ist die Abbildung der Entitäten oder so etwas in der Art, dass der sich Zeit nimmt.
  • Sind Sie sicher, dass der inner-join durchgeführt wird, die auf index ' ed Feldern? Versuchen Sie es mit der Ausgabe von SQL profiler in der Datenbank tuning Assistent.
  • Ich habe in der Ausführung plan auf dem management studio, und er schlug vor, einen index hinzufügen, was ich auch Tat. Aber es schien nicht zu haben, keine Wirkung. Wo finde ich diese Datenbank tuning Assistent?
InformationsquelleAutor bobblez | 2012-12-03
Schreibe einen Kommentar