Oracle Index Mantigi
- Sevdanur GENC

- Oct 1, 2012
- 2 min read
Oracle uzerinde kullandigimiz genel Index'leme mantiginda oncelikle indexleme tipleri, sonrasinda index secenekleri kaca ayriliyor inceliyor olacagiz. Son olarakta index olustururken dikkat etmemiz gereken ince ayrintilar neler onlari soyluyor olacagim.
Adresleme yapabilmek icin kullandigimiz bir yontemdir aslinda Index'leme. Where kelimesinin her kullaniminda index'ler kullanilir. Where'in geriye gondermis oldugu sonuc satirlarinin toplam toplam satirlarinin yuzde 5'i veya daha altinda bir sonuc getirecekse sorgularinizda index kullanilmasinda fayda vardir. Index'ler icerisinde Leaf adinda yapraklara benzetebilecegimiz bir yapi bulunmaktadir. Bu yapilardan ne kadar cok varsa iste o zaman Index'leme mantiginin bozulmaya basladigi anlasilabilir.
Optimezer ; En kisa surede en az kaynak tuketerek cozumleme yani parse islemini yapabilecek ve fetch yani satir getirme islemini tamamlayabilecek bir gorevdir.
Eger ki indexleme islemleri olmasaydi sorgulamalar icin tum tablolari elden gecirmek zorunda kalirdir. Where sorgusuyla indexleme ile key alirdir ve ona bagli olan table'i bulup bilgileri cekebilirdir.
Her distinct deger leaf bloklarini temsil etmektedir. Fakat fazla leaf bloklari sakincalidir, ve kullanilmamalidir.
Index Tipleri ;Index Tipleri ;
B Tree ; Varsayilan Index'lemedir.
Bitmap ; Enterprise lisansiniz varsa eger kullanabiliyorsunuz bu ozelligi. Distinct deger sayisi az ise yani toplamin yuzde 1'den az olmasina ozen gosterilmektedir.
Leaf sayilari sabittir. Altindaki bagli olanlari hemen bulur. Az leaf olmasi iyidir. Indexleme bozulmasinda olmuyor. Ne kadar fazla leaf varsa o zaman giris cikislardan dolayi indexler bozulur.
B Tree Row Id mantigina gore calismaktadir (Primary key). Distinct degerinin onemi kalmamis olacaktir. Amirlerde birbirlerine amirlerle baglidirlar. Bilinen agac yapisidir. Kucuk leafler vardir.
Bir seferde senkronize sekilde butun leaf'lere gidip cozumleme yapar. Herbir amir kendi basina calisir ve kendi leafleri ile ilgildir.
Bu sekilde bitmap indexlemede paralel cozumleme sunulmus olacaktir.
Create Index komutu ile varsayilan B Tree indexleme kullanilacaktir.
Create Bitmap Index komutu ile de Bitmap indexleme kullanilmis olacaktir.
Index Secenekleri ;
Index Secenekleri ;
Unique
; index degerleri benzersiz olmak zorundadir.
Reverse Key Index
; Tarih formati gibi formatlarda kullanilirlar. Tersine siralama yapar. Okuma ve cozumleme islemlerinde gucludur. Performans kaybi vardir. Cunku once duzenleyecektir. Tarih sirasina koyup yukaridan asagiya listeleyecektir.
Composite Index
; Birden fazla kolonu indexlersek kullanabiliriz.
where emp_id>70
and hire_data>11-june-2006
or salary>2000
gibi bir sorguyu cok fazla kullaniyorsak bu uc kolonu birlestirerek bir index olusturabiliriz.
Function Based Index
; Eger bir fonksiyonel defer gonderilecekse kullanilmaktadir. Dikkat edilmesi gereken bir konu ise where city = upper(New York) gibi bir sorguda upper gibi bir fonksiyon kullanilirsa o index calismayacaktir. Indexleme = isaretinden sonraki degere bakacaktir ve eger fonksiyon gorurse malesef indexler calismayacaktir. Application katmaninda fonksiyonlar olusturulabiliyordur.
Compressed Index
; Her tekrarlanan deger ortadan kaldirilmis veya bozulmustur. Bu yuzden amir sayisini sikistiririz. Amirlerin uzerine bir grup amiri belirleriz. Her sikistima islemi performansi azaltir. Ve tabi ayni zamanda CPU kullanimini arttirir.
Order
; Indexteki degerleri ASC, DESC islemine sokariz.
Hicbir zaman indexleri tablo ile ayni table space icine olusturmaz. Once indexten sonra table'den veri okunur. Farkli tablespace demek farkli disk kullanilmis demektir.
Online ; Otomatik bir sekilde kendini gunceller.
Compute ; Olusturmus oldugunu tablolarin %30 unu tarar.
Index Olusturma ;
Index Olusturma ;
Schema -> indexes -> table name -> sys -> object name -> Create islemleri adim adim uygulanir. Dikkat edilmesi gereken kurallar ise sunlardir ; Hic bir zaman indexleri tabloyla ayni tablespace icinde olusturmamaliyiz. Once index'ten sonra tablodan verileri okutturmaliyiz. Farkli tablespace farkli disk demektir bu gozardi edilmemelidir. Tablolar, indexler, apayri disklerde saklanmak zorundadir. Keyifli Calismalar Dilerim.
Comments