Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor k článku
CTE a analytické funkce v PostgreSQL

www.radino.eu
www.radino.eu (neregistrovaný)
6. 5. 2009 13:43

Re: kontrolni dotaz

celé vlákno
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