Hlavní navigace

Názor k článku CTE a analytické funkce v PostgreSQL od www.radino.eu - samozrejme v nadselekte uz je hodnota dostupna.. Ten posledny...

Článek je starý, nové názory již nelze přidávat.

  • 6. 5. 2009 13:43

    www.radino.eu (neregistrovaný)
    samozrejme v nadselekte uz je hodnota dostupna..

    Ten posledny osdstavec je trochu popleteny :)

    rownum je iba v Oracle, a inkrementuje sa s rastucim resultsetom (ked je splnena podmienka pre nejaky zaznam), takze v tom pripade naozaj vsetko ine ako rownum <= x je nezmyslel (este rownum = 1 ma zmysel)

    row_number() je analyticka funkcia tak v Oracle a v Postgre, a tam je jedno ake predikaty na nu aplikujeme (v nadselekte).. - inac tato funkcia nie je v oracli lepsia z hladiska vykonu pre implementaciu pagingu ako rownum, pretoze sa vykona nad celym resultsetom, kym rownum umoznuje zastavit ziskavenie riadkov po nejakom pocte (STOPCOUNT optimalizacia),.

    Priklad pagingu v oracle (ano, vyzera to hnusne :))
    SELECT ename, sal, deptno FROM (
    SELECT ename, sal, deptno, ROWNUM rnum FROM (
    SELECT e.ename, e.sal, e.deptno
    FROM emp e WHERE e.sal BETWEEN 1000 AND 3000
    ORDER BY e.ename)
    WHERE ROWNUM < :highest) -- stop count optimalizacia, cim neskorsia stranka tym viac prace
    WHERE rnum > :lowest