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 ...