ASP.NET
Network Akademi

Met Hostimg

“Bilgi paylaşıldıkça artar” sloganı ile .NET Platformuna ilişkin birikimlerin paylaşıldığı ASP.NET.TR Topluluğunda sizde “YAZAR” olmak için ; info@asp.net.tr e-mail adresine kendinizi anlatan bir e-mail göndererek başvuruda bulunabilirsiniz.

SQL de index ler

Mahmut TEMUR
SQL
10.12.2010 13:20:28
Hit : 13974

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.



BU İÇERİĞE YORUMDA BULUNUN


Bu MAKALE'ye yorum yapabilmek için Üye olmalısınız ...!


BU İÇERİĞE YAPILAN YORUMLAR