Yazılım Bir Tutku

Tecrübe ilimden üstündür !

SQL de index ler

Tarih : 16.06.2010 12:31:07 Kategori : MSSQL Hit : 5879

Merhaba yazılımcı dostum;

Bu makalede yine SQL de çokça karşılacağımız bir yapıdan bahsedicem. INDEX'ler. Makale konumuza geçmeden önce konumuz üzerinden işlem yaparken kontrollerimizi yapabilmemiz adına aşağıda bir Database oluşturdum ve onun üzerinden konumuzu anlatmaya çalışıcam.

Create Database IndexDeneme

       go

      Use IndexDeneme
      go
      Create Table Kisi
      (
            Id int,
            Ad nvarchar(20),
            Soyad nvarchar(20),
            Yas int
      )
     
     
      Insert into Kisi values(5,'Ali','Yýlmaz',10)
      Insert into Kisi values(2,'Zeynep','Asya',25)
      Insert into Kisi values(7,'Elif','Dudak',27)
      Insert into Kisi values(1,'Can','Korkmaz',54)
     
      Select * from Kisi  Veritabanındaki fiziksel sıradır.
 
      Id alanını Primary Key yaptık.
      Select * from Kisi Id değeri Primary Key olduðu zaman 1,2,3,4... şeklinde veriler sıralanır. Bu fizikseldir. Tablodada bu şekilde değişir.
      Biz söylemesekte Primary Key alanına göre veri fiziksel olarak sıralanır.
     

    INDEX : Veritabanında yaptığımız sorguların hızlıbir biçimde aranan kayıtları bulmasını sağlayan yapılara index denir.İki çeşittir.

      1. Clustered Index : Veritabanında verinin nasıl sıralandığını belirtir.     

      Select * from Kisi  Veriyi fiziksel olarak sıralayan denir. Her tabloda en fazla 1 tane vardır.
 
      -------------------
      --Sql sorgularımız Page diye bir yerde tutulur. En fazla 8 kb yer kaplarlar.
      --8 kb dolduðunda yeni bir sayfa daha açar.
      -------------------
     
      2- Non Clustered Index: Bir tabloda 249 tane olabilir. 

      Insert into Iletisim(Ad, Soyad, Email)
      Select FirstName, LastName, EmailAddress from AdventureWorks.Person.Contact
 
      Herhangi bir veritabanındaki index bilgilerine 'dbcc showcontig' diyerek ulaşabiliriz.
      dbcc showcontig
 
      Çıktısı:
      DBCC SHOWCONTIG scanning 'Iletisim' table...
      Table: 'Iletisim' (5575058); index ID: 1, database ID: 22
      TABLE level scan performed.
      - Pages Scanned................................: 251 --251 tane kayıt taradım.
      - Extents Scanned..............................: 32
      - Extent Switches..............................: 31
      - Avg. Pages per Extent........................: 7.8
      - Scan Density [Best Count:Actual Count].......: 100.00% [32:32] --32 seferde ulaşabileceğim bir veriyi ben 32 seferde ulaşmışım. Yani bundan daha iyisi yok.
      - Logical Scan Fragmentation ..................: 0.00% --
      - Extent Scan Fragmentation ...................: 3.13%
      - Avg. Bytes Free per Page.....................: 61.3
      - Avg. Page Density (full).....................: 99.24%
      DBCC SHOWCONTIG scanning 'Kisi' table...
      Table: 'Kisi' (2105058535); index ID: 1, database ID: 22
      TABLE level scan performed.
      - Pages Scanned................................: 1
      - Extents Scanned..............................: 1
      - Extent Switches..............................: 0
      - Avg. Pages per Extent........................: 1.0
      - Scan Density [Best Count:Actual Count].......: 100.00% [1:1]
      - Logical Scan Fragmentation ..................: 0.00%
      - Extent Scan Fragmentation ...................: 0.00%
      - Avg. Bytes Free per Page.....................: 7920.0
      - Avg. Page Density (full).....................: 2.15%
      DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Takip Ediyorum

Faydalı Projeler

Yorumlar

Hakan inşallah fırsat bulduğum sürece gerek bu tarz makalelere gerekse videolu anlatımlara yer vermeye çalışıcam. Ömer yorumun için teşekkür ederim.

eline sağlık yararlı bir yazı olmuş.

Hocam bu faydalı makaleniz için teşekkür ederim. SQL e dair başka makalelerinizde bekliyor olucam. Umarım bu makaleleri videolu anlatım şeklindede paylaşırsınız.

Sizde Yorumda Bulunun

Konuya dair fikir ve sorularınızı paylaşın