Archive for the ‘SQL’ Category

Zasto je super-kljuc super stvar?

Monday, September 9th, 2013

Svi koji se bavimo bazam podataka znamo sta je kljuc - minimalan skup atributa koji jedinstveno odredjuje entorke (tuples) koji cine telo posmatrane relacije. Minimalan znaci da ako izbacimo neki element iz kljuca, preostali skup vise nije kljuc, jer se gubi jedinstvenost. Kljuc genralno ima vise atributa, a cesto tacno ...

Full Table Scan vs. BITMAP Index vs. VIRTUAL Column

Friday, November 2nd, 2012

Ovaj put donosim jo┼í jedan primjer iz prakse, na osnovu kojeg ─çu pokazati interesantne metode optimizacije problemati─Źnog SQL upita. U stvarnoj bazi postoji jedna tabela, u koju se podaci unose i obra─Ĺuju po slijede─çem principu: - podaci se unose u nejednakim razmacima, pri ─Źemu se jedna status kolona ozna─Źi sa 'N', ┼íto ...

Interval partitioning: zašto i kako?

Saturday, October 27th, 2012

Za┼íto? Slaga─çu ako ka┼żem, da nisam po─Źetkom skoro svake godine nailazio na gre┼íku "ORA-14400: inserted partition key does not map to any partition". Uvijek, ali uvijek! neko od programera zaboravi kreirati particiju za MAXVALUE ili particije i za narednu godinu, pa poslije Nove godine bude frka i panika, kad aplikacija ne ...

Preglednost k├┤da: IF var1,…,varN IS NOT NULL … vs. COALESCE(var1, var2,…, varN)

Wednesday, October 24th, 2012

Po ko zna koji put vidjam u PL/SQL procedurama aljkav k├┤d i ne mogu se nacuditi raznim improvizacijama i perverzijama, koje pojedini programeri pisu... Jedna od zadnjih se protezala na 90 linija k├┤da i izgledala je ovako: IF var1 IS NOT NULL THEN varResult := var1; ELSIF var2 IS NOT NULL THEN varResult ...

Tips and Tricks: Brisanje duplih redaka iz tablice

Tuesday, July 24th, 2012

Koliko puta vam se dogodilo da je u tablicu identi─Źan redak insertan dva ili vi┼íe puta, a tablica nije imala definirana ograni─Źenja koja bi to sprije─Źila, ili se eventualno identi─Źni redovi razlikuju samo po primarnom klju─Źu. U svakom slu─Źaju, od njih je potreban samo jedan, svi ostali su suvi┼íni, i ...

Ko je uneo ili promenio podatke – misterija kolona CreatedUser, CreatedDate, UpdatedUser, UpdatedDate

Friday, June 29th, 2012

Uvod Podaci koje cuvamo u bazama podataka su zivi, menjaju se konstantno. Ponekad je sasvim u redu cuvati samo tekuce podatke, i promene nas ne interesuju. Mnogo cesce, medjutim, promene nas interesuju. Sta je sada, a sta je bilo pre. To nije jednostavno pratiti u relacionim bazama podataka. Nije ...

Nagradni SQL zadatak: uklanjanje preklapaju─çih filtera

Friday, October 21st, 2011

E dragi moji SQLovci, do┼íao sam na ideju da vam ponudim jedan nagradni SQL zadatak. Radi se o jednom zadatku, sa kojim sam se susreo na poslu, a smatram ga veoma zanimljivim i interesantnim za razbu─Ĺivanje mo┼żdanih vijuga. :) Postavi─çu vam zadatak, a najbolje rje┼íenje ─çe biti nagra─Ĺeno knjigom po ...

Oracle: Explain the Explain Plan

Thursday, October 20th, 2011

Zanimljivo je da mnogo Oracle programera niti nakon nekoliko godina rada sa SQL-om i PL/SQL-om ne znaju pravilno da tumace "Explain Plan" prikaz. Da se ja ne bih mucio, evo jedan dokument na tu temu, koji vrlo dobro opisuje prikaz "Explain Plan".

Poredjenje Tabela

Tuesday, August 31st, 2010

Poredjenje Tabela   Cesto se u praksi javlja zadatak poredjenja tabela. Date su dve tabele, istih struktura, istog broja redova. Takve dve table bice jednake ako su im svi odgovarajuci redovi jednaki. Dva reda su jednaka ako su im vrednsoti u odgovarjucim kolonama jednake.   Primer dve jednake tabele:   IF Object_ID('tempdb..#Original') IS NOT NULL DROP ...

ISIN validation code in PL/SQL

Monday, February 22nd, 2010

ISIN = International Securities Identification Number http://en.wikipedia.org/wiki/International_Securities_Identification_Number CREATE OR REPLACE FUNCTION sfCheckISIN(pISIN IN VARCHAR2) RETURN NUMBER IS s number := 0; a number; c number; begin a := case length(pISIN) when 12 then 1 else 2 end; for i in reverse 1..length(pISIN) loop ...