Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

En hızlı biçimde toplam kayıt sayısını almak ve sayfalama

Konu, 'PHP' kısmında furkane tarafından paylaşıldı.

  1. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    Merhaba,
    Mysql veritabanında yüzbin satırlık bir tablodan kayıt sayısını seçeceğim. Gerek kendim yazıyorum gerek forumdaki örnekleri deniyorum ama sql işlemi yavaş oluyor, sayfa yavaş açılıyor.

    $sql_toplam = mysql_query("SELECT COUNT(id) FROM tablo WHERE ad='$ad' AND onay=0");}
    list($toplam) = mysql_fetch_row($sql_toplam);

    denedim mysql_result denedim benzer hızlarda ve yavaş. bunun daha kısa bir şekilde nasıl yaparım ?

    yardımlarınızı bekliyorum
     
  2. GeCe_

    GeCe_ Aktif Üye

    Kayıt:
    30 Ocak 2006
    Mesajlar:
    436
    Beğenilen Mesajlar:
    0
    ad ve onay alanlarını indexlemeyi denedinmi?
     
  3. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    Count(*), Count([Sütun Adı]) işlevinden belirgin biçimde daha hızlıdır. Yıldız karakterini tırnak imleri (' ') içine almayın.

    artı indexle...gecenin dedigi gibi...
     
  4. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    teşekkürler arkadaşlar :) deneyip haber vereceğim buradan
     
  5. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    çok teşekkküüürleeeerrr :) farkediyor gerçekten

    bu indexlemeyi ne tür yerlerde yapmak gerekiyor acaba ?
     
  6. GeCe_

    GeCe_ Aktif Üye

    Kayıt:
    30 Ocak 2006
    Mesajlar:
    436
    Beğenilen Mesajlar:
    0
    sorguda where den sonra sık kullandıgın alanlara yapmalısın
     
  7. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
  8. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    teşekkürler arkadaşlar. ceviz gibisi yok :p

    peki index tam olarak ne yapıyor ? cache e mi alıyor yada ramde mi tutuyor.

    index'le ilgili olarak "önemlilik" ve "boyut" ne demek ? sizin de başınızı ağrıtıyorum ama bir kaynak varsa oranın linkini yazın isterseniz

    tekrar teşekkürer
     
  9. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    indexlemek bir butunu parcalamak gibi dusunebilirsin...agzına sıgmayan bir yiyecegimi daha cabuk yutabilirsin yoksa parcalanmıs dilimlenmis bir yiyecegimi daha rahat yutabilirsin...

    indexlemek... 2/2/2/2/2/2..... /n seklinde dusunebilirsin...

    digerlerini de arastır..bu kadar hazırcı olma...ceviz.net mysql derslerinde olcaktı...:)
     
  10. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    hehehe peki. 10+ sayfa olduğu için gözümü korkutuyor :)
     
  11. Eretna

    Eretna Daimi Üye

    Kayıt:
    20 Eylül 2007
    Mesajlar:
    1,639
    Beğenilen Mesajlar:
    0
    Meslek:
    WebMaster
    Şehir:
    Ankara
    bir tablo alanı indexlendiğinde o alandaki kayıt işleminde 4 kat bir yavaşlığa sebeb oluyor.
    çünkü kayıt ediyor ve sonrada yeniden harmanlıyor ama asıl iyi itarafı select işleminde verileri çekerken 40 kat daha hızlı listelemesi. bu istatistikleri değerlendirmiş bir arkadaşımızın yazısı vardı bende.
    bulursam atarım buraya....
    bu ararada her alanı indexlemende iyi olmaz. 1000 satır ve üzeri alanları indexlemen daha mantıklı olacaktır.
     
  12. furkane

    furkane Üye

    Kayıt:
    21 Ağustos 2007
    Mesajlar:
    79
    Beğenilen Mesajlar:
    0
    benim tablo 70.000 satırlı :D

    hiç kayıt yapmıcam sadece update ve select yapacağım. tüm tabloyu indexleyim mi yani ??
     
  13. GeCe_

    GeCe_ Aktif Üye

    Kayıt:
    30 Ocak 2006
    Mesajlar:
    436
    Beğenilen Mesajlar:
    0
    sadece whereden sonra kullandığın alanları indexle. hatta multiple column index yap

    http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html


    Ben 25000 satırlık 32 alanlık tablomdan 0.02 saniyede varchar a göre veri çekebiliyorum. Yine aynı farklı bir tablodaki 185000 satırlık 5 alanlık veriyi 0.1 saniyenin altında çekiyorum. Ve bu ikinci tablodaki verileri 30 saniyede bir çektiriyorum ajax ile. İyi indexlemeyle uçurursun sorguları
     
  14. Raiden

    Raiden self.life.start()

    Kayıt:
    11 Ekim 2004
    Mesajlar:
    4,392
    Beğenilen Mesajlar:
    0
    Şehir:
    /home/Raiden