Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Micsurin

    nagyúr

    válasz Szmeby #4780 üzenetére

    Köszönöm! Az a baj most nem gyakorlati dologról beszélünk hanem egy zh-ról. Ott meg ha a subquerry erőltetése a feladat x-y formátumban akkor arra fog járni a pont bármennyire is életszerűtlen a feladat szaga. Emiatt nem tudom pontosabban megfogalmazni a most bugyutának tűnő kérdésem! De így, hogy csak a forma tér el valamivel tisztább köszönöm! :R

    nyunyu Életemben először látom de magát az oracle sql-t is eddig csak mysql-lel kellett dolgozzunk, felcsesz ez a szintaktika. LIMIT helyett is mire megtaláltam ezt a ROWNUM cuccot és rájöttem, hogy subquerry megy ebbe is vagy van FETCH azt hittem megőszülök.
    Majdnem jó tipped volt ez most nem BME hanem OE.

    Neked is köszönöm! :R Ergo maradhatok a JOIN-oknál és csak arra kell figyeljek milyen formában ad vissza a subq adatot és azt miképp illesztem JOIN-al.

    Miért nem lehetett ezt így leírni a jegyzet vagy a ppt-ben? :DDD

    Igen már az EXISTS sem "tiltott" dolog, sőt..., kicsit fura az egész... de még ez az értelmes része a tranzakciók meg ez a terminálos dolog végképp elveszi a türelmem sose akartam bigdatara menni de miután tudom, hogy oracle-öznek még annyira se mint eddig.

    Köszönöm a válaszokat!

    martonx Legközelebb oda fogom feldobni akkor, nem tudom jobban leírni mert egy minden gyakorlatiasságot nélkülöző PPT példa alapján kell rájönnöm, hogy mit is akarok kérdezni. :DDD

  • nyunyu

    félisten

    válasz Szmeby #4780 üzenetére

    Meg az exists egy olyan okossag, ami egesz jo hatekonysagot mutat, annak a probalgatasat is ajanlom.

    Nem volt mindig így.

    Tizenéve még kifejezetten kerülendő antipatternként tanították az EXISTS/NOT EXISTS párost, mivel régi DBken nagyon rosszul futottak.

    Modern DBk optimalizálói viszont végrehajtás előtt át szokták alakítani LEFT JOINra, és úgy futtatják.

    Szóval a
    select *
    from tabla1
    where not exists (select id from tabla2);

    helyett már

    select tabla1.*
    from tabla1
    left join tabla2
    on tabla1.id = tabla2.id
    where tabla2.id is null;

    végrehajtási tervét fogod látni, és futtatási sebességben sem lesz köztük különbség.

    Régebbi/kevésbé fejlett optimalizálóval rendelkező DB motorokon viszont a második kód sokkal gyorsabban fut, mint az első.

Új hozzászólás Aktív témák