Hola a todos,

Al mirar el SQL generado por el ORM de Microsoft, veo que utiliza mucho las 
subconsultas, ¿Es esto óptimo? o es mejor utilizar los inner join.

Por ejemplo, código generado por linq to sql al consultar los productos de la 
base NorthWind


SELECT [t0].[ProductID],[t0].[ProductName],(
    SELECT COUNT(*)
    FROM [dbo].[Order Details] AS [t2]
    WHERE [t2].[ProductID] = [t0].[ProductID]
    ) AS [value],(
    SELECT SUM([t3].[UnitPrice] * (CONVERT(dECIMAL(38,9),[T3].[Quantity])))
    FROM [dbo].[Order Details] AS [t3]
    WHERE [t3].[ProductID] = [t0].[ProductID]
    ) AS [value2]
FROM [dbo].[Products] AS [t0]
LEFT OUTER JOIN [dbo].[Categories] AS [t1] ON [t1].[CategoryID] = 
[t0].[CategoryID]
WHERE [t1].[CategoryName] = 'Beverages'


y código hecho a mano:

SELECT     Products.ProductID, Products.ProductName, 
        COUNT([Order Details].Quantity) AS Value, 
        SUM([Order Details].UnitPrice * [Order Details].Quantity) 
                      AS Value2
FROM         Products INNER JOIN
                      Categories ON Products.CategoryID = Categories.CategoryID 
INNER JOIN
                      [Order Details] ON Products.ProductID = [Order 
Details].ProductID
WHERE     (Categories.CategoryName = N'Beverages')
GROUP BY Products.ProductID, Products.ProductName

Estoy siguiendo el tutorial en 
http://es.wordpress.com/tag/linq-to-sql/

Gracias por sus respuestas,

Luis Eduardo Duarte


       
---------------------------------
Fussy? Opinionated? Impossible to please? Perfect.  Join Yahoo!'s user panel 
and lay it on us.

Responder a