A CROSS JOIN gyakorlati haszna

A tapasztalataim azt mutatják, hogy ezt a JOIN típust nagyon kevesen ismerik, még kevesebben használják. A CROSS JOIN-t legtöbbször teszt adatok létrehozására szokták használni, nagyon sok helyen ezt olvasom, én is arra használtam. Aztán a gyakorlat hozta, hogy hol is tudnám hasznát venni.

Egy ilyen jellegű lekérdezéssel kerestek meg:

SELECT
    mezők,
    (SELECT COUNT(*) FROM másik tábla) darab
FROM tábla

Itt a SELECT listában lévő “alselect” minden egyes sorra lefut. Persze okosabb adatbázis kezelők cache-lik az eredményt, de mégis tanácsosabb az alábbi formát használni a fenti lekérdezés helyett:

SELECT
    mezők,
    tmp.darab
FROM tábla
CROSS JOIN (SELECT COUNT(*) darab FROM másik tábla) tmp

Így garantáltan csak egyszer fut le az “alselect” művelet. Kis dolog, de sok kicsi sokra megy és az SQL server sem fogja mindig felismerni, hogy mit is akarunk.
Ha a lekérdezés nagyon sok sorral tér vissza, akkor pedig két külön lekérdezésbe kell tenni.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s

%d blogger ezt kedveli: