abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:43 | IT novinky

    Na Seznam nepovolených internetových her (Wikipedie) se k 13. 7. 2026 dostala predikční platforma Polymarket.

    Ladislav Hagara | Komentářů: 0
    dnes 14:22 | Zajímavý článek

    Nová čísla časopisů od nakladatelství Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 167 (pdf) a Hello World 30 (pdf).

    Ladislav Hagara | Komentářů: 0
    dnes 00:44 | Nová verze

    Byla vydána nová verze 3.22.0 grafického vývojového prostředí a platformy Gambas (Wikipedie) založené na interpretru programovacího jazyka Basic s rozšířením o objektově orientované programování. Přehled novinek v poznámkách k vydání. Zdrojové kódy jsou k dispozici na GitLabu.

    Ladislav Hagara | Komentářů: 0
    včera 20:22 | Komunita

    FreeBSD odstranilo poslední GPL kód ze základního systému. Konkrétně dpv, libdpv, libfigpar a dialog. Instalátor před čtyřmi lety přešel z dialogu na bsddialog.

    Ladislav Hagara | Komentářů: 2
    včera 15:22 | IT novinky

    Sociální síti 𝕏 (dříve Twitter) má dnes 20 let. Pro veřejnost byla zpřístupněna 15. července 2006.

    Ladislav Hagara | Komentářů: 2
    včera 14:22 | Zajímavý software

    Insula Faktury je open source generátor faktur, který běží přímo ve webovém prohlížeči. Žádná registrace, žádné sledování, žádné omezení. Zdrojové kódy jsou k dispozici na Codebergu.

    Ladislav Hagara | Komentářů: 15
    včera 13:22 | Komunita

    První Mobile Linux Hackday v Plzni, tj. komunitní setkání věnované Linuxu na mobilních zařízeních, proběhne 24. července od 10:00. Akce je otevřená všem zájemcům – od zvědavců po zkušené vývojáře. Dopoledne proběhnou přednášky Davida Heidelberga a Petra Hodiny o aktuálním stavu mobilního Linuxu: proč vůbec chtít tučňáka v kapse, jaké telefony jsou dnes dobře podporované a co taková podpora obnáší. Po obědě se zaměříme na konkrétní

    … více »
    Ladislav Hagara | Komentářů: 0
    14.7. 19:33 | Nová verze

    3D software Blender byl vydán ve verzi 5.2 s prodlouženou podporou. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    14.7. 16:55 | Zajímavý software

    SketchForge 3D (GitHub, reddit) je open source 3D editor / CAD běžící ve webovém prohlížeči bez nutnosti účtu nebo cloudového úložiště. Inspirovaný byl Tinkercadem. Doporučena je lokální instalace.

    Ladislav Hagara | Komentářů: 0
    14.7. 12:44 | Nová verze

    Byla vydána nová verze 11.9 webového prohlížeče Midori (Wikipedie, GitHub). S novým centrem ovládání, pokročilejším blokováním reklam, optimalizací výkonu…

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (15%)
     (25%)
    Celkem 2134 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    12.3.2019 14:24 marek
    Rozbalit Rozbalit vše Re: postgres optimalizace dotazu

    Tedy smekam.

    Nebudu zastirat, ze vubec postupu nerozumim.

    Na mych datech to dela 373.236 ms, coz je vyrazne zlepseni.

    Ale uvazoval jsem:

    graphs=# EXPLAIN (BUFFERS, ANALYZE)select server.id as ser,vanview.id as van from server,vanview where label like 'nom%' ;
                                                     QUERY PLAN                                                  
    -------------------------------------------------------------------------------------------------------------
     Nested Loop  (cost=0.00..2.49 rows=24 width=8) (actual time=0.018..0.031 rows=24 loops=1)
       Buffers: shared hit=2
       ->  Seq Scan on server  (cost=0.00..1.15 rows=8 width=4) (actual time=0.010..0.011 rows=8 loops=1)
             Filter: (label ~~ 'nom%'::text)
             Rows Removed by Filter: 4
             Buffers: shared hit=1
       ->  Materialize  (cost=0.00..1.04 rows=3 width=4) (actual time=0.001..0.001 rows=3 loops=8)
             Buffers: shared hit=1
             ->  Seq Scan on vanview  (cost=0.00..1.03 rows=3 width=4) (actual time=0.003..0.006 rows=3 loops=1)
                   Buffers: shared hit=1
     Total runtime: 0.063 ms
    (11 rows)
    
    graphs=# EXPLAIN (BUFFERS, ANALYZE)SELECT max(datum),1,1 FROM van WHERE server=1 AND vanview=1;
                                                                         QUERY PLAN                                                                      
    -----------------------------------------------------------------------------------------------------------------------------------------------------
     Result  (cost=4.15..4.16 rows=1 width=0) (actual time=4.946..4.946 rows=1 loops=1)
       Buffers: shared hit=559
       InitPlan 1 (returns $0)
         ->  Limit  (cost=0.00..4.15 rows=1 width=8) (actual time=4.941..4.942 rows=1 loops=1)
               Buffers: shared hit=559
               ->  Index Only Scan Backward using van_pkey on van  (cost=0.00..1854269.90 rows=447277 width=8) (actual time=4.939..4.939 rows=1 loops=1)
                     Index Cond: ((datum IS NOT NULL) AND (server = 1) AND (vanview = 1))
                     Heap Fetches: 1
                     Buffers: shared hit=559
     Total runtime: 4.985 ms
    (10 rows)
    
    graphs=#
    

    4.985*24+0.063=119.703 ms, takze kdybych to spustil v hloupem loopu z aplikace, jsem na tom lepe.

    tak jsem napsal:

    CREATE OR REPLACE FUNCTION max1 ()
    RETURNS TABLE ( max timestamp,
    s integer,
    v integer)
    AS $$
    DECLARE row record;
    BEGIN
    FOR row IN SELECT server.id AS ser,vanview.id AS van FROM server,vanview WHERE label LIKE 'nom%' LOOP
    
     RETURN QUERY SELECT
             max(datum),row.ser,row.van FROM van WHERE server=row.ser AND vanview=row.van;
    END LOOP;
    
    
    
    END; $$
    LANGUAGE 'plpgsql';
    

    to kdyz spustim:

    EXPLAIN (BUFFERS, ANALYZE)select * from max1();
                                                    QUERY PLAN                                                 
    -----------------------------------------------------------------------------------------------------------
     Function Scan on max1  (cost=0.25..10.25 rows=1000 width=16) (actual time=27.605..27.606 rows=24 loops=1)
       Buffers: shared hit=3422
     Total runtime: 27.625 ms
    (3 rows)
    

    Tato rychlost je pro mne dostatecna.

    Ted si projdu jeste nekolikrat Vase reseni, snad to nakonec pochopim.

    dekuji za inspiraci

    marek

    ps: stejne je skoda, ze si to postgres nenaplanuje podobne, jako ta funkce...

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.