Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

problem sa not in upitom

[es] :: MySQL :: problem sa not in upitom

[ Pregleda: 1225 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Orome
programer

Član broj: 273201
Poruke: 115
*.teol.net.



+1 Profil

icon problem sa not in upitom09.11.2012. u 07:29 - pre 139 meseci
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!
 
Odgovor na temu

Orome
programer

Član broj: 273201
Poruke: 115
*.teol.net.



+1 Profil

icon Re: problem sa not in upitom09.11.2012. u 08:09 - pre 139 meseci
ipak je upit u redu nego nisam video da indeksi nisu bili ok. mozete obrisati temu, ja sam pokusao ali mi ne dopušta :)
 
Odgovor na temu

after
Ajvanho, ING

Član broj: 276962
Poruke: 97
*.dynamic.sbb.rs.



+6 Profil

icon Re: problem sa not in upitom11.11.2012. u 23:32 - pre 139 meseci
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...


 
Odgovor na temu

[es] :: MySQL :: problem sa not in upitom

[ Pregleda: 1225 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.