Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Indexleme Önceliği

Konu, 'Veritabanları' kısmında ali guner tarafından paylaşıldı.

  1. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Merhabalar,
    MS SQL Veritabanında kolonlara göre indexleme önceliği denen bir konu var mıdır ?
    Yani isim, soyisim, doğum tarihi gibi konularda isim sorguları hızlı, soyisim sorguları daha az hızlı, doğum tarihi sorguları az önceliğe sahip indexleme dolayısıyla çok daha az hızlı gibi bir işlem mi görmekte ?
    Non-Clustered Index Nedir? - İsmail GÜRSOY bu internet adresinde yazar çeşitli sorgular yapmış ve isim sorgusunun hızlı, soyisim sorgusunun daha az hızla çalıştığını izah etmiş.
    Bu konu hakkındaki fikrinizi söyleyebilir misiniz ?
     
  2. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    678
    Beğenilen Mesajlar:
    185
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    vay canına, sen uzmanlık soruları soruyorsun.? :p
    bunlar db admin soruları. neyse iyi yolda görünüyorsun.!!:cool:
     
  3. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Yabancı bir makalede okudum, tarih kolonlarına ait özel olarak index oluşturma işleminin yapılması gerektiğini söylüyor. Bundan dolayı sormak istedim açıkçası. Çünkü bende tarih ve vakit bilgileri sıkı sıkıya gerekli. Ve eğer indexlenmiyorsa durum vahim demektir.
     
  4. omer

    omer Daimi Üye

    Kayıt:
    25 Haziran 2003
    Mesajlar:
    853
    Beğenilen Mesajlar:
    8
    Merhabalar,

    1) Tarih kolonlarına göre index oluşturalabilir.
    2) Tarih kolonları senin için çok önemli ise tarih kolonlarını kullandığın önemli sorgularındaki diğer alanlarını. Index oluştururken Included Columns değerlerine atarsan table üzerinde tarama yapmadan direkt index değerlerinden veri getirebilirsin. Bir nevi lookup tutuyormuş gibi.

    Örnek olarak söylemek istediğim tüm dünyanın namaz vakitlerini tuttuğun bir tablon var senin için önemli olan tarih, il ve vakit. Tarih alanına index oluşturup il ve vakit bilgisini Included Columns 'a eklendiğinde böyle bir lookup yapmış oluyorsun.

    Şöyle bir sorgu aldığında:
    Select Il,Vakit FROM Vakitler WHERE TARIH='2017-02-05'
    bu sorgu Vakitler tablonda tarama yapmadan sana sonuçları getirecektir.

    Ben bir tablomda bu yöntemle sorgu sonucunu 20 kat hızlı getirebilmiştim.
     
  5. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    Tarih ya da herhangi bir kolon için özel olarak bir index oluşturmak istesem nasıl bir sorgu yazılmalı ?

    Bu gibi türler için özel bir index çeşidi var mıdır ?

    Hürmetler...
     
    Son düzenleme: 7 Şubat 2017
  6. omer

    omer Daimi Üye

    Kayıt:
    25 Haziran 2003
    Mesajlar:
    853
    Beğenilen Mesajlar:
    8
    Non clustred index olarak özel kolonları ayrı-ayrı index yaparsanız o indexler için özel lookup oluşuracaktır.

    Ama bu demek değildir ki her kolon için index oluşturulsun. Sadece önemli ve sık kullandığınız alanlar için yapılmalı.
     
  7. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    peki diyelim ki bu indexler oluşturuldu, tabloya anlık eklenen girdiler o anda indexlemeye "derhal" tabii tutulur mu ? yani 5 satır vardı bir satır daha eklendi. Bu yeni satır eklenmesiyle birlikte malum artık 6 satır da sorguya muhattap. son eklenen tek satırlık sorgu için indexlendi mi indexlenmedi mi, yok dur ben tabloya tekrar bakayım, indexlenmemiş satır var onu bulayım mı der ms sql ?
     
  8. omer

    omer Daimi Üye

    Kayıt:
    25 Haziran 2003
    Mesajlar:
    853
    Beğenilen Mesajlar:
    8
    Indexler derhal index'e tabi tutuluyor. Kayıt ekleme, güncelleme sırasında indexler yenilenir.

    Bu sebeple her kolon için indexleme yapılmaz çünkü kayıt eklerken indexlerde oluşturulacağın kayıt ekleme, güncelleme yavaşlar.
     
  9. ali guner

    ali guner Üye

    Kayıt:
    1 Şubat 2017
    Mesajlar:
    189
    Beğenilen Mesajlar:
    31
    Şehir:
    istanbul
    bilirsin isteğe bağlı kolonlar için indexleme oluşturulabiliyor lâkin,
    primary key ya da foreign key gibi tablolar otomatik olarak mı indexlenir ?
    yani bu tablolar için de manuel olarak mı indexleme oluşturulması gerek ?

    Hürmetler...
     
  10. omer

    omer Daimi Üye

    Kayıt:
    25 Haziran 2003
    Mesajlar:
    853
    Beğenilen Mesajlar:
    8
    Primary Key'ler için Ms Sql otomatik index oluşturmaktadır. Foreign key'leriniz diğer tablolarda primary olarak tanımlanmış alanlar olursa bu alanlara göre yapılacak işlemlerde otomatik olarak hızlı çalışacaktır.