How can I optimize this MySQL query, select rows that are NOT IN another table -


i have query:

select *  (     select         ign,         max(aktualizacja) wywalony,         datediff(curdate(),max(aktualizacja)) wywalony_dni_temu     dump_armijny     group ign ) ign not in (     select distinct ign     dump_armijny     aktualizacja =     (         select max(aktualizacja)         dump_armijny     ) ) order wywalony desc 

but takes ~2 seconds on 13k rows table, , grows fast, how can optimize it?

here query:

select a.* (select ign, max(aktualizacja) wywalony,               datediff(curdate(), max(aktualizacja)) wywalony_dni_temu       dump_armijny       group ign      ) ign not in (select distinct ign                   dump_armijny                   aktualizacja = (select max(aktualizacja)                                         dump_armijny                                        )                  ) order wywalony desc; 

typically not exists more optimized not in , select distinct unnecessary in in subquery anyway. write query this:

select ign, max(aktualizacja) wywalony,         datediff(curdate(), max(aktualizacja)) wywalony_dni_temu dump_armijny not exists (select 1                    dump_armijny a2 join                         (select max(aktualizacja) maxa dump_armijny) m                         on aktualizacja = m.maxa                    a.ign = a2.ign                  ) group ign order wywalony desc; 

it bit hard follow logic of query, think same as:

select ign, max(aktualizacja) wywalony,         datediff(curdate(), max(aktualizacja)) wywalony_dni_temu dump_armijny join      (select max(aktualizacja) maxa dump_armijny) m group ign having wywalony <> m.maxa order wywalony; 

in case, should define indexes. "must-have" dump_armijny(aktualizacja). not exists version, want dump_armijny(ign, aktualizacja).


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -