[ chemical brother @ 02.06.2010. 14:37 ] @
Pozdrav,

da li neko zna sta se brze i efektivnije izvrsava, podupit ili join?

Ako baratamo sa ciframa zapisa, reda par desetina hiljada, sta se bolje pokazuje podupit ili join?

Bilo kakva komparativna analiza je dobrodosla.

Hvala!
[ Zidar @ 02.06.2010. 19:38 ] @
Zavisi od baze podataka, verzije i konkretnih uslova.

Za MS SQL, do verzije 2005 generalno je vazilo da je JOIN brzi nego subquery. Medjutim, od verzije 2005 query optimizer generise identicne planove izvrsavanja u mnogim slucajevim za JOIN i subquery. Druge baze mozda rade drugacije. I JOIN i subquery dozvoljavaju ti da anpises los kveri. Desava se i da za neki broj redova N JON radi brze, a kada se predje neka granica subquery postaje brzi. I nema nacina da se unapred predvidi da li ce se i na kojoj grancic ovako nesto desiti. probas pa sam vidis ima li razlike i da li je znacajna.

[ bogdan.kecman @ 05.06.2010. 15:21 ] @
po pravilu - join uvek moze bolje da se optimizuje (Da se nadje optimalniji execution path). od baze do baze / optimizera do optimizera mogu da budu bolji ili losiji ... tako da ce nekad greskom optimizera subquery da bude brzi - ali generalno pravilo je da je join brzi. Skoro svaki rdbms ti daje mogucnost da pogledas execution path nekog upita (explain) pa ti je lako da uporedis.
[ Miroslav Ćurčić @ 06.06.2010. 00:29 ] @
Ova tema me podsetila na jednu stariju dilemu:
šta je brže pri spajanju tabela, LEFT JOIN ili "kartezijski skup"?

Ako se dobro sećam na nekom forumu sam davno pročitao da je JOIN brži, ali malo pre sam pokušao da to i sam testiram kroz PMA ali mi uvek ispiše isto vreme (0.0003 sec).

Bogdane, dali se to sada u novijim verzijama (testirao na mysql 5.1.33) stvarno izjednačilo ili me keš zeza?
[ aleksandar.dragojlovic @ 06.06.2010. 02:10 ] @
Zdravo svima. Iz nekog razloga (valjda su me tako ucili ?) ja pre koristim JOIN. A i mnogo ga je lakse koristiti u symfony-ju sa Propel-om...
[ chemical brother @ 07.06.2010. 13:13 ] @
I ja sam pretpostavio tako, mada me nešto navelo da počnem sumnjati u prednosti JOIN-a. Naime, ako već koristimo podupit, a znamo da se može koristiti i u select-u, where-u, ili from-u, interesuje me sad gdje bi ga najprije trebalo koristiti i kada, ako već imamo potrebu?
[ djoka_l @ 07.06.2010. 13:33 ] @
Ma lepo ti je bogdan.kecman rekao. Pogledaš execution plan upita, pa onda odlučiš šta treba da radiš.

Recimo, kad smo migrirali aplikaciju sa Oracle 10g na 11g, potrošili smo 6 meseci da proverimo kako će aplikacija raditi samo zbog izmene optimizera, a ne zbog uvođenja novih funkcionalnosti.

Jednostavno, nema prostog odgovora šta će brže raditi, čak i na istoj verziji baze na istom operativnom sistemu, ali sa različitim skupom podataka, isti kveri može da proizvede različite execution planove.
[ aleksandar.dragojlovic @ 07.06.2010. 14:20 ] @
Citat:
djoka_l: Ma lepo ti je bogdan.kecman rekao. Pogledaš execution plan upita, pa onda odlučiš šta treba da radiš.

...

Jednostavno, nema prostog odgovora šta će brže raditi, čak i na istoj verziji baze na istom operativnom sistemu, ali sa različitim skupom podataka, isti kveri može da proizvede različite execution planove.


U potpunosti se slazem.