Problema com a demora da execução de uma query, demora mais de 3 minutos para retornar cerca de 20k

1. Problema com a demora da execução de uma query, demora mais de 3 minutos para retornar cerca de 20k

Carlos Daniel
DanPHP7

(usa Debian)

Enviado em 18/01/2019 - 13:54h

SELECT      monitoramentos.id                               AS idM_0
, monitoramentos.pecuarista AS idPec_1
, monitoramentos.propriedade AS id_prop_2
, monitoramentos.bioma AS bioma_3
, monitoramentos.latitude AS lat_4
, monitoramentos.longitude AS long_5
, monitoramentos.tipo_monitoramento AS tipo_monitoramento_6
, monitoramentos.data_monitoramento AS data_monitoramento_7
, monitoramentos.analista AS analista_socio_8
, monitoramentos.dominio AS industria_9
, monitoramentos.parecer AS parecer_socio_10
, monitoramentos.situacao AS situacao_11
, monitoramentos.vinculo AS id_tipo_vinculo_12
, monitoramentos.status AS historico_monit_13
, monitoramentos.solicitacao AS id_sol_14
, solicitacoes.prioridade AS prioridade_15
, solicitacoes.data_solicitacao AS data_solicitacao_16
, solicitacoes.usuario_solicitante AS usuario_solicitante_17
, solicitacoes.unidade_origem AS operacao_18
, solicitacoes.observacoes AS obs_sol_19
, solicitacoes.analise_cartografica_analista AS cartografista_20
, solicitacoes.analise_cartografica_inicio AS data_cartografia_inicio_21
, solicitacoes.analise_cartografica_conclusao AS data_cartografia_final_22
, solicitacoes.analise_cartografica_classificacao AS classificacao_cart_23
, solicitacoes.analise_cartografica_complemento AS complemento_cart_24
, solicitacoes.analise_cartografica_parecer AS parecer_cart_25
, solicitacoes.analise_socioambiental_inicio AS inicio_analise_socio_26
, solicitacoes.analise_socioambiental_conclusao AS final_analise_socio_27
, pecuaristas.cpf AS cpf_pec_28
, pecuaristas.nome AS pec_nome_29
, registros_dominios.codigo AS codPec_30
, registros_dominios.data_cadastro AS data_cadastro_pec_31
, registros_dominios.usuario_cadastro AS cadastrante_pec_32
, registros_dominios.data_ultima_alteracao AS data_data_ultima_alteracao_pec_33
, registros_dominios.usuario_ultima_alteracao AS pec_alterado_por_34
, registros_dominios.status AS historico_pec_35
, propriedades.nome AS prop_nome_36
, registro_prop.codigo AS cod_prop_37
, propriedades.municipio AS cod_municipio_38
, propriedades.uf AS uf_39
, propriedades.area AS area_prop_40
, propriedades.ccir AS ccir_41
, propriedades.incra AS incra_42
, propriedades.car AS car_sicar_43
, propriedades.matricula AS matricula_44
, propriedades.lar AS lar_45
, registros_dominios.data_cadastro AS data_cadastro_prop_46
, registros_dominios.usuario_cadastro AS cadastrante_prop_47
, registros_dominios.data_ultima_alteracao AS data_ultima_alteracao_prop_48
, registros_dominios.usuario_ultima_alteracao AS usuario_ultima_alteracao_49
, registros_dominios.status AS historico_prop_50
, vinculos.tipo AS tipo_vinculo_51
, vinculos.nome_fiscal AS nome_fiscal_52
, vinculos.inscricao_estadual AS insc_est_53
, vinculos.data AS data_vinculo_54
, vinculos.status AS historico_vinculo_55
, vinculos.usuario AS user_resp_vinc_56
, u1.nome AS analista_socio_57
, u2.nome AS usuario_solicitante_58
, u3.nome AS cartografista_59
, u4.nome AS usuario_cadastro_pec_60
, u5.nome AS pec_alterado_por_61
, u6.nome AS cadastrante_prop_62
, u7.nome AS prop_alterado_por_63
, u8.nome AS user_resp_vinc_64
, dominios_unidades.nome AS operacao_65
, dominios.nome_curto AS industria_nome_66
, vinculos.codigo_vinc_prop AS cod_vinc_prop_67
FROM monitoramentos
LEFT JOIN registros_dominios ON monitoramentos.pecuarista = registros_dominios.idRegistro
AND registros_dominios.dominio = monitoramentos.dominio
AND registros_dominios.tipo = 'pecuaristas'
LEFT JOIN registros_dominios registro_prop ON registro_prop.idRegistro = monitoramentos.propriedade
AND registro_prop.tipo = 'propriedades'
AND registro_prop.dominio = monitoramentos.dominio
LEFT JOIN dominios ON dominios.id = monitoramentos.dominio
INNER JOIN solicitacoes ON solicitacoes.id = monitoramentos.solicitacao
LEFT JOIN pecuaristas ON pecuaristas.id = monitoramentos.pecuarista
LEFT JOIN propriedades ON propriedades.id = monitoramentos.propriedade
LEFT JOIN vinculos ON vinculos.propriedade = monitoramentos.propriedade
AND vinculos.pecuarista = monitoramentos.pecuarista
LEFT JOIN usuarios u1 ON u1.id = monitoramentos.analista
LEFT JOIN usuarios u2 ON u2.id = solicitacoes.usuario_solicitante
LEFT JOIN usuarios u3 ON u3.id = solicitacoes.analise_cartografica_analista
LEFT JOIN usuarios u4 ON u4.id = registros_dominios.usuario_cadastro
LEFT JOIN usuarios u5 ON u5.id = registros_dominios.usuario_ultima_alteracao
LEFT JOIN usuarios u6 ON u6.id = registro_prop.usuario_cadastro
LEFT JOIN usuarios u7 ON u7.id = registro_prop.usuario_ultima_alteracao
LEFT JOIN usuarios u8 ON u8.id = vinculos.usuario
LEFT JOIN dominios_unidades ON dominios_unidades.id = solicitacoes.unidade_origem
WHERE 1 = 1
AND monitoramentos.dominio IN (1,2,9,6,15,11,7,8)
GROUP BY monitoramentos.id



  


2. Re: PROBLEMA COM A DEMORA DA EXECUÇÃO DE UMA QUERY, DEMORA MAS DE 3 minutos para retornar cerca de 2

Guilherme
guipsp

(usa Ubuntu)

Enviado em 18/01/2019 - 20:53h

Olá DanPHP7, o select é grande e não temos acesso ao banco para fazer a consulta. O que visualizei de estranho:

Por que está usando group by se não está fazendo agregação? Caso a consulta esteja trazendo dados repetidos já é uma dica que há algo está errado nas ligações e pode ser um dos motivos para a lentidão.

Uma forma de você verificar o join que está causando a lentidão é:

* remover todos os campos do select e deixar um valor numérico fixo: select 1 from ... joins ... where ...
* Ir removendo os joins, um a um e executando a consulta para ver qual afeta mais a velocidade
* se houver um join especifico causando a lentidão você foca nele.










Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts