Hirdetés
Új hozzászólás Aktív témák
-
általában a window funkcióknál nem fog, ez igaz, de én nem általában írtam, hanem a konkrét megoldásra.
"egy ilyen egyszerű példában nincs különbség.": ezt az állítást nem ártott volna bebizonyítani, ebben az esetben kiderül, hogy tévedés, és nem készül belőle hozzászólás.
1 millió rekordos teszt adatbázison jól láthatóan gyorsabb a sima subselectes.
test=> explain SELECT t.aru_nev, t.aru_egysegar FROM (SELECT aru_nev,aru_egysegar, rank() OVER (ORDER BY aru_egysegar DESC) AS sorrend FROM aruk) t WHERE t.sorrend < 4 ORDER BY t.aru_egysegar;
QUERY PLAN
-----------------------------------------------------------------------------------------------------------
Sort (cost=109649.00..110482.34 rows=333333 width=36)
Sort Key: t.aru_egysegar
-> Subquery Scan t (cost=0.00..60836.36 rows=333333 width=36)
Filter: (t.sorrend < 4)
-> WindowAgg (cost=0.00..48336.36 rows=1000000 width=22)
-> Index Scan Backward using i_aru_ar on aruk (cost=0.00..33336.36 rows=1000000 width=22)
(6 rows)test=> explain SELECT * FROM (SELECT aru_nev,aru_egysegar FROM aruk ORDER BY aru_egysegar DESC LIMIT 3) AS aruk_kivonat ORDER BY aruk_kivonat.aru_egysegar ASC;
QUERY PLAN
-----------------------------------------------------------------------------------------------------
Sort (cost=0.15..0.16 rows=3 width=36)
Sort Key: aruk.aru_egysegar
-> Limit (cost=0.00..0.10 rows=3 width=22)
-> Index Scan Backward using i_aru_ar on aruk (cost=0.00..33336.36 rows=1000000 width=22)
(4 rows)time psql -d test -c 'SELECT t.aru_nev, t.aru_egysegar FROM (SELECT aru_nev,aru_egysegar, rank() OVER (ORDER BY aru_egysegar DESC) AS sorrend FROM aruk) t WHERE t.sorrend < 4 ORDER BY t.aru_egysegar;'
real 0m0.639s
user 0m0.024s
sys 0m0.016stime psql -d test -c 'SELECT * FROM (SELECT aru_nev,aru_egysegar FROM aruk ORDER BY aru_egysegar DESC LIMIT 3) AS aruk_kivonat ORDER BY aruk_kivonat.aru_egysegar ASC'
real 0m0.032s
user 0m0.024s
sys 0m0.004sha kiveszem a subselecteket és azokat hajtom végre, akkor az első megoldás visszaadja az összes rekordot, a második meg csak hármat.
Fentiek alapján melyik lekérdezés a gyorsabb, optimalizáltabb???
"egy ilyen egyszerű példában nincs különbség.": 19.93750-szeres a különbség egymillió tesztrekordon. A teszt végére még volt üres ram a gépben, tehát nem az döntött, hogy az egyiket vinyóról futtatná, a másikat memóriából, minden teszt teljesen befért a ramba.
Új hozzászólás Aktív témák
- Debrecen és környéke adok-veszek-beszélgetek
- Motoros topic
- Samsung Galaxy A56 - megbízható középszerűség
- Revolut
- Futás, futópályák
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Az SSD elfárad… a RAM miért nem?
- Otthoni hálózat és internet megosztás
- Arc Raiders
- Elemlámpa, zseblámpa
- További aktív témák...
- X1 2-in-1 Gen10 14" FHD+ IPS érintő Ultra 7 268V 32GB 512GB NVMe ujjlolv IR kam aktív toll gar
- Corsair XMS2 DDR2 4Gb (2X2Gb)
- Samsung Galaxy S24 256GB, Kártyafüggetlen, 1 Év Garanciával
- AMD Ryzen 7 7800X3D - Új, 3 év garancia - Eladó!
- Apple iPhone 16 Plus 128GB, Akku: 100%, Újszerű, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garancia!
- Telefon felvásárlás!! iPhone 11/iPhone 11 Pro/iPhone 11 Pro Max
- GYÖNYÖRŰ iPhone 13 Pro 128GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS4357, 100% Akkumulátor
- Bomba Ár! Lenovo ThinkPad L14 G2i - i5-1145G7 I 16GB I 256SSD I 14" FHD Touch I Cam I W11 I Gar
- WYBOT C2 Vision AI vezérelt medenceporszívó
- BESZÁMÍTÁS! ASUS X670E R7 9800X3D 32GB DDR5 1TB SSD RTX 4080 16GB Lian Li O11 Dynamic EVO RGB 850W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


