• Anasayfa
  • Hakkımızda
  • Etkinlikler
  • Destek Verin
  • Site Haritası
  • Giriş Yap
  • Üye Ol
  • Facebook
  • Twitter
  • RSS
Yazılım Dilleri
  • Soru - Cevap
  • EĞİTİM SETİ
  • KATEGORİ
  • DUYURU
  • TEKNOLOJİ HABERLERİ

Son Sorular

  • 23.04.2016 00:55:33C programlama 2 oyun
  • 20.04.2016 16:34:41Local Database
  • 15.04.2016 14:26:15Fatura kayıt işlemi
  • 21.03.2016 01:55:30C# problem

Popüler Sorular

  • 27.05.2012 05:49:50Asp.Net ile Date time alana veri ekleyemiiyorum ?
  • 2.04.2012 00:45:18.exe uzantılı dosya için dijital imza nerde nasıl alınır.
  • 12.05.2012 08:44:49Acil Yardım
  • 27.05.2012 13:46:51veri tabanı bağlantısı
  • .Net Framework
  • 8085 Assembly
  • Active Directory
  • ADO.NET
  • Android
  • Apple IOS
  • Arduino
  • ASP.NET
  • ASP.NET MVC
  • Blackberry
  • C#.Net
  • C++
  • CCG Framework
  • CISCO
  • CSS
  • Diğer
  • Dreamweaver
  • Entity Framework
  • Exchange Server
  • Gömülü Sistemler
  • GSM Programlama
  • Güncel
  • Güvenlik
  • HTML5
  • Java
  • Javascript / JQuery
  • Jira
  • Kariyer ve İş Yaşamı
  • LINQ
  • LibreOffice
  • Linux
  • Matlab
  • Microsoft Dynamics CRM
  • Mobil Uygulama Geliştirme
  • MySQL
  • NoSQL
  • Oracle
  • OWIN
  • PFSense
  • PHP
  • Powershell
  • Python
  • Sanallastirma
  • SAP-ABAP
  • SCOM 2012
  • SEO
  • Sharepoint 2010
  • Sharepoint 2013
  • Silverlight
  • Sistem Analiz ve Tasarımı
  • SQL Server
  • Symantec
  • TFS
  • T-SQL
  • Ubuntu
  • VB.NET
  • Veritabanı Yönetim Sistemleri
  • Visual Studio
  • VMware
  • WCF
  • Web Hosting
  • Windows 8
  • Windows Azure
  • Windows Phone 7.1
  • Windows Phone 8
  • Windows Server
  • Wordpress
  • WPF
  • Xamarin
  • XNA
  • Yazılım Mühendisliği
  • Yöneylem Araştırması
  • ASP.NET MVC
  • Entity Framework
  • Javascript / JQuery
  • LINQ
  • PHP

Son Duyurular

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

IPhone 6 ve IPhone 6 Plus Teknik Özellikleri ve Fiyatı

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

DELL'in Yeni Projesi: USB Bilgisayar (Project Ophelia)

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Windows Phone Youtube Uygulaması Google ve Microsoft ile Yeniden Yapılıyor

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Android ve Apple IOS Telefonlar için Blackberry Messenger (BBM)

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

Nokia Lumia 925 Teknik Özellikleri, Lumia 928 ve 920 ile Karşılaştırması

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

LG Optimus G Pro Özellikleri ve Gözle Video Oynatma Teknolojisi

SQL Clustured Index & Non-Clustered Index Nedir?

Sql Clustured Index & Non-Clustered Index Nedir? Veritabanı üzerinde index nasıl belirlenir?

09.10.2015

Yazar: batuhan avlayan (Google+)

Kategori: SQL Server

14540

Database tutuğumuz veriler az olunca yaptığımız sorgular için herhangi bir sıkıntı yoktur ve verilerimize rahat bir şekilde ulaşıyoruz. Verilerimiz gün geçtikçe büyüdükçe yaptığımız sorgulardan geç cevaplar almaya başlayacağız ve performans kaybı yaşayacağız. Bu durumu önlemek için sql serverda indexing yapısı kullanıyoruz. Indexing ile verilerimize verdiğimiz anahtarlar b-tree üzerinde saklanıyor ve verilere rahat bir şekilde ulaşıyoruz. Index kullanarak, lineer yapıda arama yapmak yerine tree bazında arama yapıyoruz.

                SQL Server’da iki çeşit indexleme yapısı vardır.

  1. Clustered Index
  2. Non-Clustered Index

Clustered Index

Clustered index bir tabloda yanlızca bir tane olur. Aslında bunu hepimiz kullanıyoruz genelde. Clustered index ile tablodaki kayıtlar, fiziksel olarak indeksleme alanına göre dizilmiş şekildedir. Bu yapılanma dengeli ağaç(B-Tree) yapısına sahibtir.

B-Tree Architecture yapısı aşağıdaki şekildedir.

Clustered index yapıldığında sıralanan veriler Leaf’de tutulur. Veri direk buradan okunur. Basit bir örnek vermek gerekirse genelde internette bu örneklere rastlarız J Bir dershanemizin olduğunu varsayalım. İlk gün 10, ikinci gün 25 şeklinde  öğrenci kayıt edelim ve her gelen kaydı üst üste koyuyoruz. Kayıtlar bayağı bir büyüklüğe ulaştı. Ardından bir öğrencimiz geldi dersane kayıdı ilgili bir belgeyi size verdi ve onu öğrencinin dosyasına eklemek istiyorsunuz. Herhangi bir sırada olmayan kayıt dosyaları arasında o öğrenciye ait dosyayı bulmaya çalışmak çok zahmetli bir iş fakat alfabetik bir sırada olduğu zaman dosyayı çabuk bir sürede bularak işimizi bitiriyoruz. Burdan nasıl bir kazanç sağlıyorsak databasede de clustered index yapısı kullanarak kazanç sağlarız. Ancak bazı durumlarda clustered index bizim için yeterli olmayabilir. Bu durumda yardımımıza Non-Clustered index yetişiyor.

Non-Clustered Index

Non-Clustered indexe örnek vererek başlayayım. Elimize bir kitap aldık ve çalışacağımız konuyu sayfa sayfa tek tek arayarak bulmak istemeyiz. Index sayfasından konunun kaçıncı sayfada olduğuna bakarız ve o sayfaya gideriz. Bu şekilde yaptığımızda non-clustered index yapısı oluyor. Bu yapıda tree de verinin kendisine ulaşmıyoruz. Leaf-level’larda verinin bulunduğu adres bulunmaktadır. Daha sonra Roota tekrardan çıkılarak o verinin kendisine ulaşılır. SQL Server 2005 de 255 tane SQL Server 2008 ve 2012 de 999 adet non-clustered index oluşturulabilir.

Teorik bilginin ardından bir tablo oluşturup içine 200000 kayıt ekleyip index yapılarını deneyelim.

200000 kaydımızı bu şekilde ekliyoruz.

Tablomuzda clustered index ve non-clustered index belirlemeden lineer bir query oluşturalım.

Toplam 1936 logical reads yapıldı ve 122ms sürdü. Bu verilerimizin milyonlar olduğunu düşünürsek bayağı bir zaman alacağı ortada.

Şimdi Clustered index belirleyerek sorgumuzu tekrar çalıştıralım.

Clustered indeximiz belirledik. Sorgumuzu çalıştıralım.

Sorgumuzu 3 logical read yaptı. 0ms ile veriye ulaştı.

Şimdi non-clustered index oluşturmadan önce bir sorgu çalıştıralım.

Oluşturduğumuz sorgu 1897 logical read yaptı. 47ms veriye ulaştı.

Şimdi tablomuzda name alanına non-clustered index belirleyelim.

Belirledikten sonra sorgumuzu tekrar çalıştıralım.

Görüldüğü üzere Clustered index ve Non clustered index kullanarak sql sorgularında performans bakımından önemli avantaj elde ettik.

Yazar Hakkında

batuhan avlayan

batuhan avlayan

www.batuhanavlayan.com

Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği üçüncü sınıf öğrencisiyim. İlgi duyduğum alanlar ise web teknolojileri, güvenlik ve mobil uygulamalar..

Sosyal Medya

ORANLAR

  • 14540izleme

Arkadaşlarınla Paylaş

  • Tweet

1 Yorum

Serkan Çamur

Serkan Çamur

09.10.2015

Oldukça güzel bir konu, peki hem clustered index hem de table partition kullanabiliyor muyuz? http://www.serkancamur.com

Yorum Yaz / Soru Sor

Lütfen yorum yazmak veya soru sormak için üye girişi yapınız.

Son Yorumlar

  • Hocam Link başka sayfaya yönlendiriyor.
  • merhaba benim merak ettiğim bir konu var y...
  • Merhaba download linki çalışmıyor. Rica et...
  • Nevzat Bey selamlar, Açıkçası bizler a...
  • Parametreleri Cache İşleminden Yalıtma kon...

En Güncel Sorular

  • Bilgilendirme maili (C#.Net)
  • Power Pivot (Sharepoint 2010)
  • BigInteger, BigDecimal (Asp.Net ve Asp.Net MVC)
  • visual C# ile asp nette veritabanı islemleri (Asp.Net ve Asp.Net MVC)
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ? (Sharepoint 2010)

En Son Cevap Verilen Sorular

  • Bilgilendirme maili
  • BigInteger, BigDecimal
  • visual C# ile asp nette veritabanı islemleri
  • Share Point ile Dosya Arşiv Yönetim Sistemi yapılabilir mi ?
  • txt dosyasına veri yazma

Twitter

Takip et: @yazilim_dilleri

En Çok Okunanlar

Elif BAYRAKDAR

C# ile SQL Server Bağlantısı, Insert, Update ve Delete Sorguları

23.05.2013

  • 120021
  • 0
Hakan Keskin

C# ile Windows Service Projesi Oluşturma, Debug Etme ve Setup Hazırlama

17.12.2013

  • 65102
  • 0
batuhan avlayan

Php - Mail Gönderme (İletişim Formu)

02.09.2013

  • 48270
  • 0

Sponsorlar

KODLAB
Pluralsight
Exchange server is
Office 365
YAZILIM DİLLERİ
Yukarı Çık
  • Hakkımızda
  • Facebook
  • Twitter
  • RSS

© Yazılım Dillerinin Buluşma Noktası | Kaynak belirtildiği sürece makaleler kopyalanabilir.
YazilimDilleri.Net sitesinde yer alan kullanıcıların oluşturduğu tüm içeriklerin yayınlanması ile ilgili yasal yükümlülükler içeriği oluşturan kullanıcıya aittir, YazilimDilleri.Net hiçbir şekilde sorumlu değildir.

Kapat

Giriş Yap

Kullanıcı Adı

Şifre

Şifremi Unuttum

KULLANICI GİRİŞİ