[ Orome @ 09.11.2012. 07:29 ] @
situacija je sledeca, u jednoj tabeli imam 100k redova od kojih 50k ima parametar popust=1. u drugoj tabeli imam samo redove koji imaju popust=1 i njih je 49k, ostatak od 1k nije obradjen jos uvek. meni treba upit koji brzo izvuce sve redove prve tabele koji imaju parametar popust=1 a kojih nema u drugoj tabeli.

znam za NOT IN, upit bi bio sledeci : select popust form table1 where table1.popust NOT IN (select table2.popust form table2)
medjutim to radi jako sporo (5-10 min) iako je u table2 popust PK a i u drugoj postoji kao index. video sam na netu da ima IS NULL opcija ali ni ona mi ne izvlaci mnogo brze upit iako za nju kazu da je brza.

koja je vasa preporuka sta dalje da probam? hvala unapred!
[ Orome @ 09.11.2012. 08:09 ] @
ipak je upit u redu nego nisam video da indeksi nisu bili ok. mozete obrisati temu, ja sam pokusao ali mi ne dopušta :)
[ after @ 11.11.2012. 23:32 ] @
Mysql ne optimizuje najbolje (NOT) IN upite tj. sub-querije tako da umesto:

select popust form table1 where table1.popust NOT IN (select table2.popust form table2)

mozes da probas sa:

select table1.popust
from table1
left outer join table2
on table1.popust = table2.popust
where table2.popust is null

Ako si na to mislio pod IS NULL opcijom...