Hirdetés
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MasterDeeJay: Intel Optane M10: mire lehet használni?
- gban: Ingyen kellene, de tegnapra
- hcl: GPT diszk kisebbre klónozása
- Elektromos rásegítésű kerékpárok
- N€T0X|N: Talaria tuning: meg kéne tudni állni!
Ú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
- exHWSW - Értünk mindenhez IS
- Konteó topic
- Házi hangfal építés
- Linux kezdőknek
- Allegro vélemények - tapasztalatok
- iPhone topik
- Hordozható Linux terminál billentyűzettel és érintőképernyővel
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Szeged és környéke adok-veszek-beszélgetek
- Windows 7
- További aktív témák...
- Micron 5200 ECO 480 GB 2,5 SATA Enterprise/Datacenter Server SSD
- Komplett gép: i7 12700 - 4.90 Ghz / 32 GB DDR5 / 512 GB NVMe / Win 11 Pro - HP Z2 tower G9
- Asztali PC , i5 9500T , 1660 Super , 16GB DDR4 , 512GB m.2
- Asztali PC , i5 12400F , RX 6600 XT , 16GB RAM , 512GB nVME , 1TB HDD
- iPhone 13 256GB Midnight
- AKCIÓ! Huawei Watch 4 Pro eSIM okosóra garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 5 9600X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HP EliteBook 830 G5 13,3" i7 8650u, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- Új Asus Zenbook 14 OLED 2.8K 90Hz HDR i7-13700H 14mag 16GB RAM 1TB SSD Intel Iris XE Win11 Garancia
- Apple iPad 9 64GB,Átlagos,Adatkabel,12 hónap garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
