- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Mr Dini: Mindent a StreamSharkról!
- Luck Dragon: Asszociációs játék. :)
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- kenand: Hol volt, hol nem volt, Thunderbolt...
- eBay-es kütyük kis pénzért
- Lalikiraly: Commodore The C64, Ultimate
- gban: Ingyen kellene, de tegnapra
- sh4d0w: Árnyékos sarok
- Magga: PLEX: multimédia az egész lakásban
Új hozzászólás Aktív témák
-
bpx
őstag
válasz
Apollo17hu
#3445
üzenetére
Ha most tényleg az a cél, hogy a 2 subqueryt egymástól független megcsinálja 1-1 alkalommal, akkor kb. így:
SELECT /*+ use_hash(t1 t2) */ t1.mezo_1
,t1.mezo_2
FROM (SELECT /*+ no_merge no_push_pred */ t.id
,t.mezo_1
,t.mezo_2
FROM tabla_1 t
WHERE feltetel_1
AND feltetel_2
...
AND feltetel_n) t1
,(SELECT /*+ no_merge no_push_pred */ t.id
FROM tabla_2 t
WHERE feltetel_1
AND feltetel_2
...
AND feltetel_n) t2
WHERE t1.id = t2.id;A subquery itt úgy viselkedik mintha view lenne. A view-kat az adatbázis "kifejti" ha tudja, az eredeti példát szerintem simán átírja az adatbázis úgy, mintha nem is lennének subquery-k, csak a 2 táblára a join. Ez a view merging, ezt akadályozza meg a no_merge hint.
Ha a view-kon kívül is vannak egyéb feltételek, azt az adatbázis be tudja helyezni a view-n belülre. Pl. a "select * from view1 where column1='...'" lekérdezést végre lehet úgy hajtani, hogy előállítja a view1 teljes eredményhalmazát, majd a végén alkalmazza a column1 szűrést, de úgy is, hogy a column1 szűrést átírja úgy, mintha a view-n belül lenne. Ez nem csak egyszerű szűrésekre működik, hanem joinra is, tehát miután előállította a t1 tartalmát, az adatbázis a t2-be már beviszi a tabla_2.id = t1.id szűrést és felhasználja a t1-ből jövő id értékeket, ez a join predicate pushdown. Ezeket tiltja a no_push_pred.
A use_hash-t meg csak a biztonság kedvéért tettem oda, hogy mindkettő subquery-t csak 1-szer csinálja meg, és ne válasszon nested loops-t.
Aztán ezen kívül még lehetnek mindenféle más optimalizálások, amelyekre most nem gondoltam és további hintek kellenének.
De persze nem ezt tartom a jó megoldásnak.
Új hozzászólás Aktív témák
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- VGA kibeszélő offtopik
- alza vélemények - tapasztalatok
- Energiaital topic
- Synology NAS
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Autós topik
- Hivatalos a OnePlus 13 startdátuma
- Disney+
- Motorola Edge 70 - többért kevesebbet
- További aktív témák...
- iPad Pro 11 (M5) Wifi + Cellular 256GB (Bontatlan) 1 éb garancia
- Eladó Asus ROG Nuc15 (2025) - Ultra 9 275HX, RTX 5070 Ti Laptop, 32GB/1TB, hibátlan, magyar garis
- Dobozos // iMac // 8GB/256GB // M3 chip // egérrel és billentyűzettel
- Xiaomi Poco X4 Pro 256GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A54 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Készpénzes / Utalásos Számítógép felvásárlás! Személyesen vagy Postával!
- ÚJ könyv: Gloviczki Zoltán - A holnapután iskolája
- GYÖNYÖRŰ iPhone 13 mini 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3060
- Használt Radiolink AT10 II távirányító készlet / 12 hónap működési jótállás
- Gamer PC-Számítógép! Felsőkategória! R7 9800X3D / RX 9070XT / 32GB DDR5 / 2TB SSD / Noctua !
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs

