I have a performance problem in a SQL statement generated for your .Net driver. From what I analyzed, it occurs due to an improper sub-select.
Any solution?
WITH OUT ORDER BY
Code: Select all
var fonteDeDados = Contexto.Set<Mercadoria>()
.AsNoTracking()
.Where(parametros.Expressao)
.Take(10)
.Select(s => new
{
s.Id
})
.ToList();
Code: Select all
SELECT
"Extent1".id
FROM org000001.mercadoria AS "Extent1"
INNER JOIN org000001.mercadoriabase AS "Extent2" ON "Extent1".idbase = "Extent2".id
WHERE "Extent1".ativo = true AND
"Extent2".idmercadoriaespecie = 0 AND
"Extent1".idempresa = 4 AND
(public.unaccent(upper("Extent2".codigo)) LIKE public.unaccent(upper('OLEO%')) OR public.unaccent(upper("Extent2".descricao)) LIKE public.unaccent(upper('OLEO%')))
LIMIT 10;
Code: Select all
var fonteDeDados = Contexto.Set<Mercadoria>()
.AsNoTracking()
.Where(parametros.Expressao)
.OrderBy(o => o.Id)
.Take(10)
.Select(s => new
{
s.Id
})
.ToList();
Code: Select all
SELECT
"Project1".id
FROM ( SELECT
"Extent1".id
FROM org000001.mercadoria AS "Extent1"
INNER JOIN org000001.mercadoriabase AS "Extent2" ON "Extent1".idbase = "Extent2".id
WHERE "Extent1".ativo = true AND
"Extent2".idmercadoriaespecie = 0 AND
"Extent1".idempresa = 4 AND
(public.unaccent(upper("Extent2".codigo)) LIKE public.unaccent(upper('OLEO%')) OR public.unaccent(upper("Extent2".descricao)) LIKE public.unaccent(upper('OLEO%')))
) AS "Project1"
ORDER BY "Project1".id ASC
LIMIT 10
Code: Select all
SELECT
"Extent1".id
FROM org000001.mercadoria AS "Extent1"
INNER JOIN org000001.mercadoriabase AS "Extent2" ON "Extent1".idbase = "Extent2".id
WHERE "Extent1".ativo = true AND
"Extent2".idmercadoriaespecie = 0 AND
"Extent1".idempresa = 4 AND
(public.unaccent(upper("Extent2".codigo)) LIKE public.unaccent(upper('OLEO%')) OR public.unaccent(upper("Extent2".descricao)) LIKE public.unaccent(upper('OLEO%')))
ORDER BY "Extent1".id ASC
LIMIT 10;
https://bugs.mysql.com/bug.php?id=75272