Provided by: manpages-tr_1.0.5.1-2_all bug

ISIM

       CREATE INDEX - yeni bir indeks tanimlar

KULLANIM

       CREATE [ UNIQUE ] INDEX isim ON tablo [ USING y"ontem ]
           ( { s"utun | ( ifade ) } [ i,sle,c_sinifi ] [, ...] )
           [ TABLESPACE tablo_alani ]
           [ WHERE dayanak ]

A,CIKLAMA

       CREATE  INDEX  belirtilen  bir  tablo  uzerinden  bir indeks olusturur.
       Indekslerin birincil kullanim amaci veritabani basarimini  arttirmaktir
       (ancak, uygunsuz kullanimi basarimin dusmesiyle sonuclanir).

       Indeks  icin  anahtar  alanlari  sutun  isimleri  olarak ya da parantez
       icinde  yazilmis  ifadeler  olarak   belirtilir.   Indeksleme   yontemi
       coksutunlu indeksleri destekliyorsa, cok sayida alan belirtilebilir.

       Bir  indeks  alani  tablonun  satirindaki  bir  veya  daha  fazla sutun
       degerinden hesaplanan bir ifade olabilir. Bu ozellik, bazi  temel  veri
       donusumlerini  temel  alan  veriye  daha  hizli  erisim  saglamak  icin
       kullanilabilir. Ornegin, upper(col)'a gore hesaplanan bir indeks, WHERE
       upper(col) = 'JIM' gibi bir deyimin belirtilebilmesini mumkun kilar.

       PostgreSQL B-tree, R-tree, hash ve GiST indeksleme yontemlerini icerir.
       B-tree indeksleme yontemi bir  Lehman-Yao  yuksek  bilinirlikli  B-tree
       gerceklenimidir.  R-tree  indeksleme  yontemi,  Gutman'in dordul ayirma
       algoritmasi kullanilarark  gerceklenir.  Hash  indeksleme  yontemi  ise
       Litwin'in   bir   gerceklenimidir.  Kullanicilar  da  kendi  indeksleme
       yontemini tanimlayabilir ama bu oldukca karmasiktir.

       WHERE deyiminin varliginda, bir kismi  indeks  olusturulur.  Bir  kismi
       indeks,   bir   tablonun   kalanina  gore  indeksleme  bakimindan  daha
       kullanisli  olan  bir  bolumundeki  girdileri  iceren  bir   indekstir.
       Ornegin,  hem  toptan  hem de perakende siparisleri iceren bir tablomuz
       olsun, perakende siparislerin tabloda daha az bulunmasina karsin en sik
       kullanilanlarin bunlar oldugunu varsayalim. Sadece bu kayitlarla ilgili
       bir indeks olusturarak basarimi onemli olcude arttirabilirsiniz.  Baska
       bir  olasi  kismi  indeks uygulamasi, tablonun bir alt kumesindekilerin
       essizligini saglamak icin WHERE ile UNIQUE'in birlikte kullanimidir.

       WHERE ile kullanilan  ifade  sadece  indekslenen  tablonun  sutunlarina
       basvurabilir    ama    sadece   indekslenen   degil,   butun   sutunlar
       kullanilabilir. Simdilik, WHERE  deyimi  icinde  altsorgular  ve  ortak
       deger  islevleri de kullanilamamaktadir. Ayni kisitlamalar ifadelerdeki
       indeks alanlari icin de gecerlidir.

       Bir indeks taniminda kullanilan butun islevler  ve  islecler  IMMUTABLE
       imli  olmalidir, yani sonuclar bunlarin argumanlarina bagimli olmali ve
       argumanlari asla yorumlanabilir olmamalidir (baska bir tablonun icerigi
       ya  da  simdiki zaman kullanilamaz). Bu sinirlama indeksin davranisinin
       iyi tanimlanmis olmasini  saglar.  Bir  kullanici  tanimli  islevi  bir
       indeks ifadesinde ya da WHERE deyiminde kullanmak istiyorssaniz, islevi
       tanimlarken IMMUTABLE imli olmasini saglamayi unutmayin.

PARAMETRELER

       UNIQUE Indeks  olusturulurken  ve   her   veri   eklenisinde,   tabloda
              birbirinin   ayni  degerler  bulunmamasi  icin  sistemin  sinama
              yapmasini saglar. Girdilerin yinelenmesine sebep olacak bir veri
              girme  veya  guncelleme isleminin yapilmaya calisilmasi bir hata
              uretecektir.

       isim   Olusturulacak indeksin  ismi;  burada  sema  nitelemeli  isimler
              kullanilamaz. Indeks daima tabloyu iceren semada olusturulur.

       tablo  Indekslencek tablonun ismi (sema nitelemeli olabilir).

       y"ontem Indeks  icin  kullanilacak  yontemin  ismi. Deger olarak, btree,
              hash, rtree ve gist verilebilir. btree ontanimli yontemdir.

       s"utun  Tablo sutunun ismi.

       ifade  Tablonun bir ya da daha fazla sutunu  ile  ilintili  bir  ifade.
              Ifade  yukaridaki sozdiziminde gosterildigi gibi parantez icinde
              yazilmalidir.  Ancak,  ifade  bir  islev  cagrisi   bicimindeyse
              parantez icine alinmayabilir.

       i,sle,c_sinifi
              Bir islec sinifinin ismi. Ayrintilar icin asagiya bakiniz.

       tablo_alani
              Indeksin     olusturulacagi    tablo    alani.    Belirtilmezse,
              default_tablespace   yapilandirma   degiskeninin   degeri;    bu
              degiskene  bir  deger  atanmamissa veritabaninin ontanimli tablo
              alani kullanilir.

       dayanak
              Bir kismi indeks icin kisit ifadesi.

EK BILGI

       Indekslerin  hangi  durumlarda   yararli   oldugu,   hangi   durumlarda
       kullanilmayacagi, ne zaman kullanildigi gibi bilgileri
       http://www.postgresql.org/docs/8.0/static/indexes.html        adresinde
       bulabilirsiniz.

       Simdilik, cok sutunlu indekslerde  sadece  B-tree  ve  GiST  indeksleme
       yontemleri   desteklenmektedir.  Ontanimli  olarak  en  fazla  32  alan
       belirtilebilir. (Bu sinir  PostgreSQL  kurulum  icin  yapilandirilirken
       degistirilebilir.)    B-tree    simdilik    sadece   essiz   indeksleri
       desteklemektedir.

       Bir islec sinifi bir indeksin her  sutunu  icin  belirtilebilir.  Islec
       sinifi indeks tarafindan sutunlar icin kullanilacak islecleri belirler.
       Ornegin, dort baytlik tamsayilar uzerindeki bir B-tree indeksi int4_ops
       sinifini   kullanirdi;   bu  islec  sinifi  dort  baytlik  tamsayilarin
       karsilastirma  islevlerini  icerir.  Uygulamada,  sutun   turune   gore
       ontanimli  olan islec sinifi genellikle yeterli olur. Islec siniflarina
       sahip olmanin ana esprisi, birden  fazla  anlamli  siralamasi  olabilen
       bazi  veri  turlerinin  olmasidir. Ornegin, bir karmasik sayi veri turu
       icin siralamayi hem gercel kismi  hem  de  mutlak  degeri  icin  yapmak
       isteyebiliriz.  Bunu  veri  turu  icin iki islec sinifi tanimlayarak ve
       indeksi olustururken bu  siniflardan  birini  belirterek  yapabilirdik.
       Islec siniflari hakkinda daha fazla bilgi edinmek icin
       http://www.postgresql.org/docs/8.0/static/indexes-opclass.html ve
       http://www.postgresql.org/uygulamalar/pgsql/xindex.html     adreslerine
       bakiniz.

       Bir indeksi kaldirmak icin DROP INDEX [drop_index(7)] kullanilir.

       Indeksler ontanimli olarak IS NULL deyimleri icin kullanilmazlar. Boyle
       durumlarda  indeksleri  kullanmanin  en  iyi  yolu, IS NULL dayatmasini
       kullanan bir kismi indeks olusturmaktir.

"ORNEKLER

       films tablosunun title sutunu uzerinde bir  B-tree  indeksi  olusturmak
       icin:

           CREATE UNIQUE INDEX title_idx ON films (title);

       films tablosunun code sutunu uzerinde bir indeks olusturup, bu indeksin
       indexspace tablo alaninda kalmasi icin:

           CREATE INDEX code_idx ON films(code) TABLESPACE indexspace;

UYUMLULUK

       CREATE INDEX bir  PostgreSQL olusumudur.   SQL  standardinda  indeksler
       icin bir bahis yoktur.

ILGILI BELGELER

       ALTER INDEX [alter_index(7)], DROP INDEX [drop_index(7)].

,CEVIREN

       Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005