1

Ich lese diese article auf LINQ s zu tun Joins. Ich habe mich gefragt, welchen Nutzen das haben würde, abgesehen von dem Schreiben einer gespeicherten Prozedur, die den Tabellen beitreten würde? Würde es bei Joins mit LINQ irgendwelche Leistungsprobleme geben?LINQs Joins vs gespeicherte Prozeduren Joins

UPDATE:

mit diesem so als Beispiel:

var employeeInfo = 
       from employee in employees 
       join addInfo in additionalInfo on employee.ID equals addInfo.CategoryID into allInfo 
       select new { CategoryName = category.Name, Products = allInfo}; 

Würde diese einfache join Nutzen mich wie zu einem stored procedure apposed? Ich weiß, abhängig von der Größe der Tabellen und der Anzahl der Tabellen, die Sie möchten join könnte einen großen Unterschied machen bei der Verwendung LINQ vs store procedure. Was würde auf der Anzahl von Tabellen und Größen eine gute „Daumenregel“ sein, ein für LINQ verwenden soll, schließt sie, und wenn LINQ verbindet Durchführung wird zu viel von einer Performance-Einbußen?

+0

Diese Frage ist zu öffnen. Es hängt von der spezifischen Instanz und davon ab, wie Sie die gespeicherte Prozedur schreiben und wie Sie die linq schreiben. Wenn Sie eine echte Antwort wollen, geben Sie ein spezifisches Beispiel für ein Datenmodell, sql und linq. – Hogan

Antwort

1

Die Leistung von Abfragen Joins im Allgemeinen hängt davon ab, ob die richtigen Indizes für die verbundenen Felder vorhanden sind. Wenn Ihre Abfrage einen vollständigen Tabellendurchsuchungsvorgang erstellt, werden Felder nicht indexiert, Ihre Leistung wird direkt beeinflusst. Führen Sie einen EXPLAIN-Plan aus, wenn Sie Bedenken hinsichtlich der Leistung gespeicherter Prozeduren haben.

In Bezug auf LINQ und Joins möchten Sie es nicht tun.

Hier ist ein guter Artikel unten auf LINQ schließt sich, aus dem Artikel:

Einer der größten Vorteile von LINQ to SQL und LINQ to Entities sind Navigationseigenschaften, die Abfragen über mehrere Tabellen, ohne die Notwendigkeit zu verwenden, erlaubt explizite Joins. Leider werden LINQ-Abfragen oft als direkte Übersetzung einer SQL-Abfrage geschrieben, ohne die umfassenderen Funktionen von LINQ to SQL und LINQ to Entities zu nutzen.

https://coding.abel.nu/2012/06/dont-use-linqs-join-navigate/