Hirdetés

Keresés

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

  • Louro

    őstag

    válasz Szmeby #4631 üzenetére

    Ezt nem is vitatom, meg lehet én is írtam ilyet. Kell a pénz. Beszállító max az elején naív, hogy minőségi terméket, szolgáltatást készíthet, de pár megrendelés után valószínűleg rájön, hogy elég olyat felvenni, ami tud valami karistolni. Nem kell, hogy elhivatott legyen. Majd kicsit feljebb tolják a projekt közben az "ajánlott gépigény" részt.

    Amúgy picit ON is legyek. De nem vitaindítónak szánom, hátha kiesik valami tanulság másoknak (is).

    Egyik kolléga már egy hete szenvedett valamivel. Egyszer megírta a kódot és kb. mindig ugyanazt futtatta, de 12+ óra utána megszakadt a kapcsolat (távmunka). Remélte, hogy hátha valaki más is futtat valami számításigényes feladatot és elcsíphet egy nyugodtabb időszakot.

    Megnézve a kódot, kicsit átírva 38 másodpercre le lett faragva a futási idő.

    Három, relatíve kicsi tábla (300e rekord) tábla lett összekapcsolva.
    De a gondot az okozhatta, hogy az ON feltétel után olyan komplex feltétel volt, hogy ledobtam az ékszíjat. Valami ilyesmi lehetett:
    SELECT fejléc
    FROM tábla1
    INNER JOIN tábla2
            ON (
                  tábla1.oszlop1 LIKE '%valami%' 
     OR 
     tábla1.oszlop2 >= tábla2.oszlop1 
            OR 
     (tábla1.oszlop3 IN (SELECT tábla3.oszlop1 
           FROM tábla3 
           WHERE oszlop2 > tábla2.oszlop4)
             AND .....))

    Igazából annyit módosítottam a kiraktam a feltételeket külön oszlopokba CASE WHEN-ekkel, majd utána végeztem el a kötéseket. Táblakötésbe LIKE és ennyi feltétel a korábbi tapasztalataim alapján nem túl hatékony. Bár query plan-t a kollégák nem szokták nézni, pedig sokszor hasznos lenne.

    +1: Sajnos sokszor látok olyat is, hogy fejlécben van tábla úgy bekötve, hogy ott is van még egy tábla a SUBSELECT-en belül. Például
    SELECT
     (SELECT oszlop1 FROM tábla2 WHERE tábla2.oszlop2 = (SELECT MAX(oszlop2) FROM tábla2)) c
    FROM tábla1

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