LEFT JOIN "DadosPessoa" ON "DadosPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
JOIN "TituloPessoa"
ON "TituloPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "TituloPessoa"."CodigoTituloPessoa" IN (SELECT "TituloPessoa"."CodigoTituloPessoa" FROM "TituloPessoa" WHERE "TituloPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "TituloPessoa"."DataTitulo" DESC LIMIT 1)
JOIN "TipoTitulo" ON "TipoTitulo"."CodigoTipoTitulo" = "TituloPessoa"."FK_CodigoTipoTitulo"
JOIN "HistoricoPosicao"
ON "HistoricoPosicao"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "HistoricoPosicao"."CodigoHistoricoPosicao" IN (SELECT "HistoricoPosicao"."CodigoHistoricoPosicao" FROM "HistoricoPosicao" WHERE "HistoricoPosicao"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "HistoricoPosicao"."DataPosicao" DESC LIMIT 1)
JOIN "TipoPosicao" ON "TipoPosicao"."CodigoTipoPosicao" = "HistoricoPosicao"."FK_CodigoTipoPosicao"
LEFT JOIN "GrupoPessoa"
ON "GrupoPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "GrupoPessoa"."CodigoGrupoPessoa" IN (SELECT "GrupoPessoa"."CodigoGrupoPessoa" FROM "GrupoPessoa" WHERE "GrupoPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "GrupoPessoa"."DataGrupoPessoa" DESC LIMIT 1)
LEFT JOIN "Grupo" ON "Grupo"."CodigoGrupo" = "GrupoPessoa"."FK_CodigoGrupo"
O resultado de retorno para 4mil registros é de 7,800 segundos, já não tenho mais idéia de como diminuir o tempo, ou montar essa consulta de outra forma.
Pergunta
rblazio
Prezados,
Procuro idéias de como diminuir o tempo de resposta dessa consulta:
SELECT "Pessoa"."CodigoPessoa",
"Pessoa"."NomePessoa",
"Pessoa"."Apelido",
"Pessoa"."SexoPessoa",
"DadosPessoa"."Matricula",
"DadosPessoa"."EstadoCivil",
"DadosPessoa"."Nacionalidade",
"DadosPessoa"."Naturalidade",
"DadosPessoa"."DataNascimento",
"DadosPessoa"."NomePai",
"DadosPessoa"."NomeMae",
"DadosPessoa"."DataCasamento",
"TipoTitulo"."Titulo",
"TipoPosicao"."NomePosicao",
"Grupo"."NomeGrupo",
"TipoTitulo"."FK_CodigoGrupoTitulo" AS "CodigoGrupoTitulo"
FROM "Pessoa"
LEFT JOIN "DadosPessoa" ON "DadosPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
JOIN "TituloPessoa"
ON "TituloPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "TituloPessoa"."CodigoTituloPessoa" IN (SELECT "TituloPessoa"."CodigoTituloPessoa" FROM "TituloPessoa" WHERE "TituloPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "TituloPessoa"."DataTitulo" DESC LIMIT 1)
JOIN "TipoTitulo" ON "TipoTitulo"."CodigoTipoTitulo" = "TituloPessoa"."FK_CodigoTipoTitulo"
JOIN "HistoricoPosicao"
ON "HistoricoPosicao"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "HistoricoPosicao"."CodigoHistoricoPosicao" IN (SELECT "HistoricoPosicao"."CodigoHistoricoPosicao" FROM "HistoricoPosicao" WHERE "HistoricoPosicao"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "HistoricoPosicao"."DataPosicao" DESC LIMIT 1)
JOIN "TipoPosicao" ON "TipoPosicao"."CodigoTipoPosicao" = "HistoricoPosicao"."FK_CodigoTipoPosicao"
LEFT JOIN "GrupoPessoa"
ON "GrupoPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa"
AND "GrupoPessoa"."CodigoGrupoPessoa" IN (SELECT "GrupoPessoa"."CodigoGrupoPessoa" FROM "GrupoPessoa" WHERE "GrupoPessoa"."FK_CodigoPessoa" = "Pessoa"."CodigoPessoa" ORDER BY "GrupoPessoa"."DataGrupoPessoa" DESC LIMIT 1)
LEFT JOIN "Grupo" ON "Grupo"."CodigoGrupo" = "GrupoPessoa"."FK_CodigoGrupo"
O resultado de retorno para 4mil registros é de 7,800 segundos, já não tenho mais idéia de como diminuir o tempo, ou montar essa consulta de outra forma.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.