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

  • Goose-T
    veterán

    Van két tábla: ''a'' és ''b''
    a-nak azon elemeit akarom megkapni, melyek b-ben nincsenek meg.

    Azt hiszem ez jó megoldás:

    SELECT a.id FROM a
    WHERE a.id NOT IN
    (SELECT b.id FROM b);

    Indexelve vannak a mezőnevek, de már 25 perce fut a lekérsezés! Nem lehet ezt valahogy másképp megírni? (Ezek a ''not in''-es lekérdezések mindig sokáig tartanak :((( )

    A WHERE feltételbe rakott SELECT nagyon lelassítja a lekérdezést, mivel minden egyes sornál lefuttatja a feltételben szereplő SELECT utasítást. Ha az a.id és a b.id megfeleltethető egymásnak, akkor egy LEFT JOIN-os lekérdezéssel közösíteni kell a két táblát majd egy külső SELECT-tel kiválogatni a megfelelő rekordokat, valahogy így:

    SELECT * FROM (SELECT a.id as aid, b.id as bid FROM
    a LEFT JOIN b ON a.id = b.id) WHERE bid IS NULL



    [Szerkesztve]

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