Query - idéias para melhorar performance
Pessoal, eu tenho a seguinte query:
SELECT COUNT(DISTINCT(i.chassi_abreviado)) FROM vw_ve_itenscoleta3 i
WHERE i.idcliente = 147 AND i.status_coleta = 'PROCESSADA'
AND i.idtipo_operacao = 11
AND i.chassi_abreviado IN
(SELECT i2.chassi_abreviado FROM vw_ve_itenscoleta3 i2
WHERE i2.idcliente = 147 AND i2.status_coleta = 'PROCESSADA' AND i2.idtipo_operacao = 13)
AND i.chassi_abreviado IN
(SELECT i3.chassi_abreviado FROM vw_ve_itenscoleta3 i3
WHERE i3.idcliente = 147 AND i3.status_coleta = 'PROCESSADA' AND i3.idtipo_operacao = 14)
Eu preciso selecionar apenas os registros onde o chassi se encontra em tipo_operacao = 11 mas também foram achados em idtipo_operacao = 13 e 14.
Eu não posso apenas fazer isso: AND i2.idtipo_operacao IN (13,14), pq se eu fizer desta forma, ele pode ou não estar em 13 e 14, só que eu quero que eles estejam obrigatoriamente em 13 e em 14.
Minha duvida é: Com essa query, eu percorro minha tabela 3x. Existe alguma forma de que eu possua o mesmo resultado mas que eu faça o mysql percorrer a tabela no maximo 2 vezes?
Estou querendo isso, pq dessa forma a minha query fica muito pesada.
Discussão (6)
Carregando comentários...