Sulla base di questa domanda: What is difference between Where and Join in linq?LINQ - Utilizzo di dove o unisciti - La differenza di prestazioni?
La mia domanda è la seguente:
C'è una differenza di prestazioni nei seguenti due affermazioni:
from order in myDB.OrdersSet
from person in myDB.PersonSet
from product in myDB.ProductSet
where order.Persons_Id==person.Id && order.Products_Id==product.Id
select new { order.Id, person.Name, person.SurName, product.Model,UrunAdı=product.Name };
e
from order in myDB.OrdersSet
join person in myDB.PersonSet on order.Persons_Id equals person.Id
join product in myDB.ProductSet on order.Products_Id equals product.Id
select new { order.Id, person.Name, person.SurName, product.Model,UrunAdı=product.Name };
lo farei usa sempre il secondo solo perché è più chiaro.
La mia domanda è ora, è la prima più lenta della seconda? Costruisce un prodotto cartesico e lo filtra in seguito con le clausole where?
Grazie.
Risposta molto buona, e con l'utilizzo di join la performance dovrebbe essere migliore? – kamahl
@Patrick: le prestazioni dipenderanno dalla situazione esatta. Se LINQ to SQL lo converte nello stesso SQL, ovviamente questo non farà la differenza. Ma sì, generalmente un join * dovrebbe * eseguire meglio. Sono sicuro che ci sono casi eccezionali in cui non sarebbe però :) –