No es un simple LINQ a EF:¿Por qué EF genera una subconsulta para una consulta simle?
var query = from p in _db.Posts
where p.BlogtId == blogId
select p;
Se genera SQL en esta forma:
SELECT
`Extent1`.`PostId`,
`Extent1`.`BlogId`,
...
FROM `Posts` AS `Extent1`
WHERE `Extent1`.`BlogId` = @p__linq__0
Pero cuando agrego una orden por la que esta consulta
var query = from p in _db.Posts
where p.BlogId == blogId
orderby p.PublishDate
select p;
Genera esta consulta
SELECT
`Project1`.`PostId`,
`Project1`.`BlogId`,
...
FROM (SELECT
`Extent1`.`PostId`,
`Extent1`.`BlogId`,
...
FROM `Posts` AS `Extent1`
WHERE `Extent1`.`BlogId` = @p__linq__0) AS `Project1`
ORDER BY
`Project1`.`PublishDate` ASC
¿Por qué esto genera una subconsulta? Hay un problema de rendimiento para esta consulta en MySQL. MySQL está intentando ejecutar la consulta interna que retira todos los registros en la base de datos y luego trata de ordenar el tema.
Necesito una solución para generar a continuación sql por LINQ
SELECT
`Extent1`.`PostId`,
...
FROM `Posts` AS `Extent1`
WHERE `Extent1`.`BlogId` = @p__linq__0
ORDER BY
`Extent1`.`PublishDate` ASC
Qué diferencia hace para usted? – podiluska
@podiluska Hay un problema de rendimiento para esta consulta en MySQL. MySQL está intentando ejecutar la consulta interna que retira todos los registros en la base de datos y luego trata de ordenar el tema. –
¿Por qué los retiraría a todos, están filtrados? – podiluska