sql - Mysql subquery in a view very slow -
i'm trying last result table using data_coleta (date) , servico_id base. query working slow. how can optimize?
select t1.* amostra_ensaio_full t1 t1.cliente_id = 6 , t1.tipo_id <> 1 , t1.data_coleta = (select max(s1.data_coleta) amostra_ensaio_full s1 t1.cliente_id = s1.cliente_id , s1.tipo_id <> 1 , s1.tipo_id = t1.tipo_id) , t1.servico_id = (select max(s2.servico_id) amostra_ensaio_full s2 t1.cliente_id = s2.cliente_id , s2.tipo_id <> 1 , s2.tipo_id = t1.tipo_id) group t1.cliente_id , t1.tipo_id
you can speed query using indexes.
the query is:
select t1.* amostra_ensaio_full t1 t1.cliente_id = 6 , t1.tipo_id <> 1 , t1.data_coleta = (select max(s1.data_coleta) amostra_ensaio_full s1 t1.cliente_id = s1.cliente_id , s1.tipo_id <> 1 , s1.tipo_id = t1.tipo_id ) , t1.servico_id = (select max(s2.servico_id) amostra_ensaio_full s2 t1.cliente_id = s2.cliente_id , s2.tipo_id <> 1 , s2.tipo_id = t1.tipo_id ) group t1.cliente_id , t1.tipo_id;
you want following index query: amostra_ensaio_full(cliente_id, tipo_id, servico_id)
.
the condition tipo_id <> 1
unnecessary in subquery, causes no harm.
Comments
Post a Comment