Kategoriler


SON YORUMLAR
Taha
Hocam elinize , kaleminize sağlık çok güzel bir yazı olmuş.
Tatar Ramazan
Anlo-Saksonlar (İngiliz, Amerika), Almanlar, Fransızlar, Ruslar, Yahudiler dünyanın en başarılı milletleri. Genleri dolayısıyla öyle. Osmanlının zirve döneminde bile sanat ve bilimde bizden ileriydiler. Rönesans 1450den sonra başladı. Bizim zirve dönemi 1600lü yıllardı. Osmanlı bile daha zeki diye Avrupadan adam getirdi. Türkiyede bile başarılı, düzgün, elit insanların önemli bir bölümü muhacırdır. Geçmişte Yunanistan, Bulgaristan, Makedonya, Romanya, Bosna gibi yerleri feth edebildik. Bu ülkelerden şimdi de ileriyiz zaten. Fransa, Cermenler, İngilizler, Ruslar oralara üstünlük kuramadık. Bugün de yine o milletler bizden maddi anlamda ileri. Yani değişen bir şey yok. Japonlara, Çinlilere ve Hindulara gelince.. Teknoloji, bilim, buluş gibi alanlarda yukarıda saydığım kavimler yapıyor çoğu şeyi. Japonlar buluş yapmıyor. Var olanı küçültüyor. Tasarım yapıyor. Sony markasının reklamı bile vardı 12 sene önce. En küçük fotoğraf makinesini, kamerayı, bilmem ne cihazını biz yaptık falan filan. Amerikanın eşek gibi çalıştırdığı köleler. Ehli kitap (Hristiyanlar, yahudiler) ve müslümanlar her zaman putperest kavimlerden üstündür. Bunu unutmayın. Maddi ilerlemenin dinle, dinsizlikle alakası yok. Çalışan kazanır.
Hüseyin
Kafamdaki çoğu soruya cevap buldum teşekkürler...
Samet
Makaleyi harika buldum .Çok işime yaradı. Teşekkürler.
Tatar Ramazan
Saatte 1500 satır kod yazmayan kendini camdan aşağı atsın. Almanya 1. ve 2. dünya savaşı öncesi 10-20 senede süper güç olmuştu. Sıkı ve disiplinli çalıştılar çünkü. Biz 90 senede bir savaş uçağı yapamadık. Atatürkçüler suçu islama, Osmanlıya attılar. Kemalist Türkiye niye bi halt olamadı o zaman? Kendin çalışma, okuma, bir şey becereme ondan sonra dinde kabahat ara. Sümme haşa!
Gamze
C#, C++, ASP.NET-MVC, HTML-CSS, Matlab, Arduino ödevleri, web sitesi yapılır. Bilgi için; gamze.zirh@gmail.com
Seda
web sitesi, masa üstü uygulamaları, muhasebe, restaurant, otel, barkot sistemleri yazılımı yapılır. adres:s.sedaerden@gmail.com
Hafize
Yazılım ödevleri ve web sitesi yapılır.Bilgi için hafizearduc@hotmail.com
Tatar Ramazan
Temam geldi
Dilara
Doğru yazdığıma eminim
Tatar Ramazan
Kopyala elle yazma yanlış yazdın. Gelmedi
Tatar Ramazan
Gördüm şimdi
Dilara
Attim
Tatar Ramazan
İlle mühendislik diyorsun demek. O halde sana iyi yazılımcı olmanın yolunu göstereyim. Bunu sen istedin. kambozlusaban@hotmail.com babamın mail adresi. Mesaj at. Atınca da buraya yaz attım diye.

Bilgisayar Mühendisleri
Here is the website inspired me to use 
it as a guide when I tried to define 
myself as an engineer candidate a few 
years ago. It really helped me to work
 and study feeling in confidence with 
being on the right way. I suggest this 
website to whom it may direct her/his 
to find the right career path. It 
includes many articles varies from 
real life experiences to detailed 
software engineering issues. But the 
most dignified parts for me are the 
articles in general and career titles.
Son okunan makaleler:
Oracle - Indexler Hakkında detaylı bilgi - 2
Bilgisayar Mühendisleri Kaç Para Alır?
Oracle - Kayıtların sayfa sayfa getirilmesi - Oracle paging
Oracle Performanslı Index Kullanımı
Oracle - Data Cartridges
AJAX ve Şahane Ajax Örnekleri
Sizden gelen sorulara kısa kısa cevaplar
Transact-SQL - T-SQL - SQL NEDİR?
Bilgisayar Mühendisliğini yeni kazandım, neler yapmalıyım?
Bilgisayar Mühendsileri için CV hazırlama rehberi - 1
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
Bilgisayar Mühendisliği Hakkındaki 10 Büyük Yalan!
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
Şehir dışında okumak
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler
En iyi bilgisayar mühendisliği bölümüne sahip üniversiteler

Bilgisayar Mühendisleri Portalı

Oracle - Indexler Hakkında detaylı bilgi - 2

Indeks var ama neden kullanılmıyor ?

Durum 1 : T tablomuzda “x” ve “y” kolonlarımız olsun ve “idx_t(x,y)”  şeklinde de bir indeksimiz oldugunu düşünelim.( concatenated index).Bu index ‘i kullanabilmek için “where” koşulundan sonra bu kolonları :
         “….where x = :X and y = :Y” şeklinde ya da “…where x = :X” şeklinde  , indeksin kullanılmasını sağlamış oluruz.

”…where y=:Y” durumunda ise indeks kullanılmayacaktır.Indeksli kolonlar T(x, y, z) ise indekten faydalanmak için “where” koşulundan sonra aşağıdaki kolon sırası takip edilirse indeks kullanılır :
(x, y, z)
(x,y)
(x)

(x,z), (y,z) gibi kombinasyonlarda indeks kullanılmaz.(Cost Based Optimizer kullanıldıgını düşünüyoruz)Durum 2 : T tablomuzda “x” kolonu üzerinde indeks oldugu düşünelim.
 

select count(*) from T , işleminde indeks üzerinden gitmesini beklerken FTS yapmış oldugunu görebiliriz.Bunun muhtemel sebebi indeks oluşturulan “x” kolonu “NULL” içermesi olabilir.NULL içeren kolon değerleri için indeks oluşturulmayacağını görmüştük.Bu durumda Oracle mantıklı olan FTS yapmayı tercih edecektir.

Durum 3 : select * from T where func(indexed_col) = value  , gibi bir durumda indeks kullanılamaz.Indeks oluşturulan kolonlar için fonksiyon kullanıldıgında indeks işe yaramaz.Çünkü fonksiyonun değerine değil , fonksiyona parametre olan kolon üzerinde indeks vardır.Eğer buna ihtiyaç var ise “function-based index” kullnılmasında fayda var.

Durum 4 :  Bir karakter kolonu indekslediğimizi düşünelim.Aşağıdaki gibi bir sorguda :
select * from T where indexed_col = 5 , indeks kullanılmayacaktır.Çünkü bu sorgu select * from T where to_number(indexed_col) = 5, ile aynıdır.Bu durumuda (Durum 3)’ te açıklamıştık.Bunu genelleyecek olursa implicit olarak yapılan karakter dönüşümlerine engel olunmaz ise indekste kullanılamaz.
Benzer bir durum tarih alanları üzerinde indeks oluşturulduğunda karşımıza çıkar.
 

select * from T where trunc(indexed_date_col) = trunc(sysdate);

indeks TRUNC fonksiyonu sebebi ile yine kullanılamaz.Bu sorgu yerine :
…. indexed_date_col between trunc(sysdate) and trunc(sysdate)plus one mınus one second;
ya da
select * from t where indexed_date_col between trunc(sysdate) and trunc(sysdate) +1 – 1(1*24*60*60)

kullanılmalıdır.Bununla birlikte yukarıdaki 2 yöntemde, değer bir kez hesaplanıp indeks üzerinden gidilirken

“…where trunc(indexed_date_col) = trunc(sysdate);” durumunda ,her satır için trunc(indexed_date_col) hesaplanacaktır.

DURUM 5 : Indeks var ama hala kullanmıyorsam, bunun bir başka sebebi de CBO için gerekli olan istatistikleri toplamamış olmamız olabilir.Bir tablo oluşturulduktan sonra belli zamanlarda ilgili istatistikleri (tablo, kolon, indeksler vs..) toplamamız gerekiyor.Ancak bu sayede CBO en iyi çözümü bulabilir.Indeks buluna bir tabloda indeksli kolon için, tablo küçük iken FTS tercih etmesi  doğal olabilir.Ama tablo büyüdükçe indeks range scan ile daha performanlı sorgu yapılabilir.ancak CBO, buna ancak elinde dogru bilgi olursa karar verebilir.

DURUM 6 : “CBO için gerekli istatistikleri de topladım ama indeks yerine hala FTS yapılıyor “ , boyle bir durumda gercekten dogru olan FTS olabilir.Örneğin 1000 kayıtlı bir tablo da indeksli kolon üzerinden 250 kaydı sorgulamak istediğimde , indekse gidip oradan tabloya erişim yapılacağına dogrudan tabloya gidip FTS yapmak daha az maliyetli olacaktır.Bu tablodaki veri sayısı örneğin 100.000’e ulaştıgında aynı sorgu için FTS yapması gariptir, bakılması gerekir.

Hakkı Oktay
http://hakkioktay.wordpress.com

Bu makaleyi beğendin mi? Yorumunu Yaz!







Sizden Gelen Yorumlar:

Yorum Yazın

(08.02.2012 15:02:26)
nefret ediom oracledan amma ameleleiik daa
%40 %0 %60
Katılıyorum Çekimserim Katılmıyorum



Mehmet Vecdi Sami(08.02.2012 11:32:22)
Merhaba yazı çok yararlı oldu benim açımdan. Teşekkür ederim.
%75 %0 %25
Katılıyorum Çekimserim Katılmıyorum



1(09.08.2010 09:32:10)
1
%30 %30 %40
Katılıyorum Çekimserim Katılmıyorum






Copyright© 2001-2017. Bilgisayar Mühendisleri Portalı | Bütün hakları saklıdır.