Názor k článku Používání indexů v PostgreSQL: krátce a pro začátečníky od Ivan - V tomhle se musim Oracle zastat. OFFSET/LIMIT nema jednoduse proto,...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 9. 2012 18:17

    Ivan (neregistrovaný)

    V tomhle se musim Oracle zastat. OFFSET/LIMIT nema jednoduse proto, ze tyhle veci implementoval davno pred tim, ze se to stalo soucasti ISO standaru.
    Jejich politika je "bohuzel" takova, ze pokud pro nejaky problem existuje reseni, tak uz se zadne druhe nedela. Navic v Oracle mate skrolovatelne kurzory, takze muzete prochazet resultset dopredu a dozadu kolikrat se vam zlibi.

    Pokud jde o mazani tak Oracle taky nemaze z indexu, k jejich "cisteni" dochazi az v okamziku kdy se prijde na to, ze index obsahuje invalidni ROWID - rika se tomu index "browning" (na podzim listy stromu hnednou a opadavaji). "Perfomace problem" s mazanim je zpusoben tim, ze se pouziva UNDO tablespace. Smazani radky vyzaduje 1 OI operaci nad datovym tablespace, 1 OI nad UNDO tablespace, plus dalsi 2 IO operace nad redo-logy nad kazdym tablespace, takze to muze nakonec byt az 6 IOs pro jednu radku. Navic se do UNDO uklada pri delete cely obsah radky, zatimco pri insertu je to jen ROWID. Pokud vas zajimava jak to udelat lepe, tak se podivejte na Terradatu a na jijich dopredne a zpetne redo-logy.

    Pokud jde o vytahovani hodnot z indexu, tak musim souhlasit s Leninem. Je opravdu paradni vec, se kterou se da dokazat spousta triku na zvyseni vykonu.