Ú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
- Elektromos autók - motorok
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- EAFC 26
- MasterDeeJay: i7 4980HQ asztali gépben (vs i7 4770)
- exHWSW - Értünk mindenhez IS
- 3D nyomtatás
- Hivatalosnak tűnő rendereken a Motorola Edge 70 Fusion
- gban: Ingyen kellene, de tegnapra
- Samsung LCD és LED TV-k
- Információbiztonság, kiberbiztonság, adatvédelem
- További aktív témák...
- Dell Pro 14 PC14250 14" FHD+ IPS érintő Ultra 5 235U 16GB 256GB NVMe ujjlolv IR kam gar
- Thinkpad X13 Gen4 13.3" FHD+ IPS érintő i5-1335U 16GB 256GB NVMe IR kam gar
- 256Gb és 512Gb nvme SSD pack eladó
- AMD BLACK - Ryzen 7 7800X3D - RX 9060 XT
- CTO Bontott 0perces TÜZES EZÜST/STARLIGHT MacBook Air 15" M4 10C/1G 16GB 256GB Gar.: 1 év APPLE gar
- Acer Chromebase All-in-One PC 23.8" Touchscreen
- Telefon felvásárlás!! Xiaomi Redmi Note 10, Xiaomi Redmi Note 10s, Xiaomi Redmi Note 10 Pro
- Telefon felvásárlás!! Apple Watch SE/Apple Watch SE 2 (2022)
- iPhone XR 64GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3993, 100% Akkumulátor
- ÚJ AKKU! Ár/ÉRTÉK BAJNOK! Dell Latitude 5330 i3-1215U 6mag! 16GB 512GB 13.3" FHD 1 év gar
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs

