Cluster indexin anlamı ve kullanımı

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Cluster indexin anlamı ve kullanımı

Mesaj gönderen delphist »

S.a. Arkadaşlar unique indexi biliyoruz. Peki Cluster indexin kullanım amacı nedir. Açıklayabilirseniz sevinirim. İyi Çalışmalar
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Mesaj gönderen unalaygun »

Index Page ve Data Page Sıralıdır.
Bu yüzden en hızlı arama Clustered index ile yapılır.
Bir Tabloda 1 tane Clustered Index vardır.
derviş
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Merhaba,

Peki clustered index primary key'e otomatik olarak ataniyor. Sizce degistirilip baska bir alana mi koyulmali yoksa primary keyde kalmaya devam mi etmeli?

Tesekkurler.
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

Mesaj gönderen unalaygun »

aslında indexleri koyarken neye göre koyacağımızı iyi seçmeliyiz.
mümünde olduğunca uniq alanlar tercih edilmeli bunun nedenide seçilebilirliği artırırsak index gerçek manasında kullanılabilir.
şimdi buna bir örnek verecek olursak

KayitNo long
Adi string

bu şekilde bir tabloda indexi adına göre koyduğumuzu düşünelim bir addan çokça aynı olabilir. Ahmet vb. gibi
ama kayitno ise sadece bir tane index çalışırken arama faalitlerinde bunlar önemli.

primary key e gelince kendi tablo yapınızı düşünerek buna kendiniz karar vermelisiniz.

Ve indexleri mümkün olduğunca seçilebilirliği göre koyarsanız o kadar verim alırsınız.
kolay gelsin.
_________________
derviş
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Peki herhangi bir alana index koydugumuzda,
Alan ismi " SINIF " olsun. Index adi IX_TABLE1_SINIF olsun..

Kod: Tümünü seç

SELECT * FROM TABLE1
WITH (INDEX = IX_TABLE1_SINIF)
WHERE SINIF = 1
gibi bir kullanim ile

Kod: Tümünü seç

SELECT * FROM TABLE1
WHERE SINIF = 1
gibi bir kullanim arasinda performans farki var mi?

Kolay gelsin.
Glen
Üye
Mesajlar: 277
Kayıt: 12 Eki 2005 11:58

Mesaj gönderen Glen »

Sordugum soru icin bi deneme yaptim.

Sonuc = EVET

Kesinlikle WITH INDEX kullanilmali, 250.000 kayitli tablodan 12000 kaydin bulundugu bir kritere gore kayit cektim

WITH INDEX li sql sorgusu 30 saniye surdu, normali 1 dakika 56 saniye..
unalaygun
Üye
Mesajlar: 139
Kayıt: 27 Mar 2004 12:34
Konum: istanbul

index e zorlama

Mesaj gönderen unalaygun »

aslında bu işlemi zaten sql in yapması gerekiyor zaten genelde de yapar fakat bazen bu işlemi gerçekleştiremiyor.
bu gibi durumlarda arkadaşın soylediği işlem kullanılabilir..

yazdığı gibi basit tek tablo sorgularda olabilir fakat joini bol olan ve büyük tablolarda eğer sizin zorladığınız index duruyorken where şartından herhangi bir şey kaldırılır ya kalkarsa o zaman sorun olabilir ama siz kesinlikle eminseniz yani eğer sorgunuz hiç değişmeyecekse tabiki güzel bir olay.
ben şuan çalıştığım şirkette raporlamacı olarak çalışıyordum ilk başladığımda ve inanın 24 saat çalışan bir sistem ve çok büyük datalar var.

Ve her raporun değişik görünümleri ve buna bağlı olarak sql leri var.
yazılmış olan raporların bazılarında bu durumu gözlemlemiştim sqller değiştiği için indexler sabit kaldığı için yavaş çalışıyor bende değişen sqle göre index i değiştirmiştim..
Böylece daha hızlı değişti yani where deki şartlara göre indexler verilirse güzel bir yöntem..
saygılar...
derviş
Cevapla