folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Sql Sorgu Performansı Hakkında Bir Soru



Sql Sorgu Performansı Hakkında Bir Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    merhaba tahribat ailesi ingıl cingıl her şeye takılıyorum. o kadar da ayrıntı kıyıda köşede sorular oluyor ki kafama takılan nerede nasıl arayacağımı da bilmiyorum. genel kod bilgim olsa belki yorum yapardım ama yok. o yüzden olan arkadaşlarıma soruyorum :)

    şimdi bi SQL sorgusu yaparken örneğin "SELECT kullanici FROM aktivasyon WHERE aktivasyonid=:aktivasyonid AND aktivasyonkodu=:aktivasyonkodu" yazdığımız zaman sorguda önce birinci şarta bakıyor sonra onu sağlayanlardan ikinci şarta mı bakıyor yoksa her iki şart için baştan aşağı mı tarıyor.

    şundan dolayı soruyorum. elbette "id" den aratmak daha hızlı. eğer önce "id" bakıp sonra ikinci koşula bakıyorsa sorun yok ama her ikisi için baştan aşağı tarıyorsa "kod" u bulması "id" kadar hızlı olmayacağından performans düşüklüğü oluşturur diye düşündüm.

    o yüzden ne olur ne olmaz diye "SELECT kullanici, aktivasyonkodu FROM aktivasyon WHERE aktivasyonid=:aktivasyonid" şeklinde sorgu yapıp gelen aktivasyon kodunu elimdeki ile eşleşiyor mu diye bakıyorum. gerçi böyle daha iyi en azından iki ayrı durum için (id yok/kod yanlış) iki ayrı hata mesajı verebiliyorum ama merak ettiğim için sormak istedim.

    geçende bi arkadaş başka bir konuda bahsetmişti "veya" için ilk öncül yanlışsa ikinciye bakmıyor diye. aynı/benzer mantık tüm programlama dilleri ya da en azından SQL için geçerli mi diye merak ettim.

    sormuşken hadi bi de şunu da sorayım. kullanıcıdan gelmeyen verileri bile PDO prepared statements bindValue kullanarak kullanıyorum. bunun performansa bir etkisi olur mu. ha en son bi de adı geçmişken bindValue mu, bindParam mı? :D

    çok soru sordum. okuduğunuz için teşekkür ederim, cevaplar için de şimdiden :)

    kofcu tarafından 10/Haz/16 14:37 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Amatör Üye
    masteryoda
    masteryoda's avatar
    Kayıt Tarihi: 15/Mayıs/2012
    Erkek

    Sorgularda büyük veriden küçük veriye doğru gidiyorum ben daha performanslı oluyor örnek

    select * from cariler where yil='2016' and ilid='34' and böyle böyle gidiyor integer alanlarda sorgulama daha performanslı tabi indexlerinde önemini atlamamak lazım. order by larda da indexli alana göre sıralamak performanslı.

    Ali Nizam'ın Veritabanı Teorisi kitabını da tavsiye ederim çok istifade edersin.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek
    masteryoda bunu yazdı

    Sorgularda büyük veriden küçük veriye doğru gidiyorum ben daha performanslı oluyor örnek

    select * from cariler where yil='2016' and ilid='34' and böyle böyle gidiyor integer alanlarda sorgulama daha performanslı tabi indexlerinde önemini atlamamak lazım. order by larda da indexli alana göre sıralamak performanslı.

    Ali Nizam'ın Veritabanı Teorisi kitabını da tavsiye ederim çok istifade edersin.

    hocam id zaten otomatikmen indekslenmiş olan. onun dışında kodu da indekslesem komple tabloyu indekslemiş oluyorum :)

    ben düşününce önce indekslenenin aranmasını onların arasından artık diğer aranan şeyin aranmasının mantıklı olduğunu düşünüyorum.

    ama hepsinden önce sorum bilgisayarın bizim düşündüğümüz mantıkla kademeli mi ilerlediği, yoksa her iki şart için iki kere baştan aşağı tarama mı yaptığı? cevabından ilk söylediğim gibi olduğunu anladım. öyle mi?


    ben de sevgiden yanayım...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek
    kofcu bunu yazdı

    geçende bi arkadaş başka bir konuda bahsetmişti "veya" için ilk öncül yanlışsa ikinciye bakmıyor diye. aynı/benzer mantık tüm programlama dilleri ya da en azından SQL için geçerli mi diye merak ettim.

    "veya" durumunda 1. koşul sağlanmasa bile 2. koşula bakar hocam. Senin dediğin "ve" koşulunda 1. yanlışsa 2. ye bakmaz. Bu da programlama dilleri ile alakalı bir durum. SQL in çalışma yapısı biraz daha farklı. SQL e bir sorgu gönderdiğinizde 5 aşamadan geçer (stored procedure değilse). SQL sorguyu en hızlı şekilde çalıştıracağı şekilde optimize eder. Where koşulunda eğer index li sütun için bir koşul varsa önce onu arar diye düşünüyorum. Çünkü en hızlı indexli alanlarda sorguyu çalıştırır. Sorgunun performansı üzerine kitap yazılır hocam :) bu sebeple Google'da SQL Sorgu performansı şeklinde araştırmanı öneririm


    Titanyumun gücü adına!!!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek
    Yazilimci bunu yazdı
    kofcu bunu yazdı

    geçende bi arkadaş başka bir konuda bahsetmişti "veya" için ilk öncül yanlışsa ikinciye bakmıyor diye. aynı/benzer mantık tüm programlama dilleri ya da en azından SQL için geçerli mi diye merak ettim.

    "veya" durumunda 1. koşul sağlanmasa bile 2. koşula bakar hocam. Senin dediğin "ve" koşulunda 1. yanlışsa 2. ye bakmaz. Bu da programlama dilleri ile alakalı bir durum. SQL in çalışma yapısı biraz daha farklı. SQL e bir sorgu gönderdiğinizde 5 aşamadan geçer (stored procedure değilse). SQL sorguyu en hızlı şekilde çalıştıracağı şekilde optimize eder. Where koşulunda eğer index li sütun için bir koşul varsa önce onu arar diye düşünüyorum. Çünkü en hızlı indexli alanlarda sorguyu çalıştırır. Sorgunun performansı üzerine kitap yazılır hocam :) bu sebeple Google'da SQL Sorgu performansı şeklinde araştırmanı öneririm

    "Ve" "veya" olayı evet dediğin gibi hocam ben bi anlık yanlış yazmışım. SQL Sorgu performansı da evet güzel bir arama başlığı. Bir inceleyim, teşekkür ederim...

    Aslında böyle ufak şeylere takılmasam daha ileride olabilirdim ama napalım artık takılıyorum işte.. :)


    ben de sevgiden yanayım...
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek
    kofcu bunu yazdı
    Yazilimci bunu yazdı
    kofcu bunu yazdı

    geçende bi arkadaş başka bir konuda bahsetmişti "veya" için ilk öncül yanlışsa ikinciye bakmıyor diye. aynı/benzer mantık tüm programlama dilleri ya da en azından SQL için geçerli mi diye merak ettim.

    "veya" durumunda 1. koşul sağlanmasa bile 2. koşula bakar hocam. Senin dediğin "ve" koşulunda 1. yanlışsa 2. ye bakmaz. Bu da programlama dilleri ile alakalı bir durum. SQL in çalışma yapısı biraz daha farklı. SQL e bir sorgu gönderdiğinizde 5 aşamadan geçer (stored procedure değilse). SQL sorguyu en hızlı şekilde çalıştıracağı şekilde optimize eder. Where koşulunda eğer index li sütun için bir koşul varsa önce onu arar diye düşünüyorum. Çünkü en hızlı indexli alanlarda sorguyu çalıştırır. Sorgunun performansı üzerine kitap yazılır hocam :) bu sebeple Google'da SQL Sorgu performansı şeklinde araştırmanı öneririm

    "Ve" "veya" olayı evet dediğin gibi hocam ben bi anlık yanlış yazmışım. SQL Sorgu performansı da evet güzel bir arama başlığı. Bir inceleyim, teşekkür ederim...

    Aslında böyle ufak şeylere takılmasam daha ileride olabilirdim ama napalım artık takılıyorum işte.. :)

    Takılmak iyidir hocam. Araştırma ihtiyacı hissederek araştırdığında daha kalıcı olur zihninde.


    Titanyumun gücü adına!!!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    PcK0
    PcK0's avatar
    Kayıt Tarihi: 13/Nisan/2007
    Erkek

    Çok küçük verimlilikler ile uğraşmak %99.98 oranında gereksizdir.

    Böyle bir optimasyonun 0.1ms fayda sağladığını düşünelim.

    Eğer sorgu 100bin defa çalıştırılacaksa bize sadece 10 saniye fark sağlar. Şöyle ki: iki bilgisayar olsun. Birebir aynı olsun. Birisi optimasyonlu diğeri optimasyonsuz olsun. Aynı anda başlatıldığında optimasyonlu olan sadece 10 saniye önce bitirecektir sorguyu.

    Eğer sorgu 1milyar defa çalıştırılacaksa bize sadece 100bin saniye fark sağlar. Şöyle ki: iki bilgisayar olsun. Birebir aynı olsun. Birisi optimasyonlu diğeri optimasyonsuz olsun. Aynı anda başlatıldığında optimasyonlu olan sadece 100bin saniye önce(27 saat 42dk önce) bitirecektir sorguyu.

    Ne yapacağını sen biliyorsun. Acaba bu optimasyona ihtiyacın var mı?

    Edit: Editör azizliği.

     

    PcK0 tarafından 11/Haz/16 13:00 tarihinde düzenlenmiştir

    Sadece bi imza..
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Yazilimci
    Yazilimci's avatar
    Kayıt Tarihi: 01/Şubat/2014
    Erkek
    PcK0 bunu yazdı

    Çok küçük verimlilikler ile uğraşmak %99.98 oranında gereksizdir.

    Böyle bir optimasyonun 0.1ms fayda sağladığını düşünelim.

    Eğer sorgu 100bin defa çalıştırılacaksa bize sadece 10 saniye fark sağlar. Şöyle ki: iki bilgisayar olsun. Birebir aynı olsun. Birisi optimasyonlu diğeri optimasyonsuz olsun. Aynı anda başlatıldığında optimasyonlu olan sadece 10 saniye önce bitirecektir sorguyu.

    Eğer sorgu 1milyar defa çalıştırılacaksa bize sadece 100bin saniye fark sağlar. Şöyle ki: iki bilgisayar olsun. Birebir aynı olsun. Birisi optimasyonlu diğeri optimasyonsuz olsun. Aynı anda başlatıldığında optimasyonlu olan sadece 100bin saniye önce(27 saat 42dk önce) bitirecektir sorguyu.

    Ne yapacağını sen biliyorsun. Acaba bu optimasyona ihtiyacın var mı?

    Edit: Editör azizliği.

     

    Kesinlikle sonuna kadar her harfine katılıyorum...


    Titanyumun gücü adına!!!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    pratikte takılmamam gerektiğinin farkındayım, merak ediyorum sadece merakımı gidermeden de ilerleyemiyorum. bu işten para kazanıyor olsam pratik daha önde olmalı tabi ama, kazanmıyorum. kafama göre takılıyorum :)


    ben de sevgiden yanayım...
Toplam Hit: 1095 Toplam Mesaj: 9
sql performans genel bilgisayar mantığı