Ceviz Forum'a hoşgeldiniz.
9 sonuçtan 1 ile 9 arası gösteriliyor
  1. #1
    Ceviz Üyesi
    Üyelik Tarihi
    05/2007
    Mesaj
    71

    Varsayılan mysql_num_rows çok yavaşlatıyor

    Arkadaşlar bir anket sistemi hazıladık yanlız şöyle bir sorunumuz var:

    Anketler yaklaşık 70-80 sorudan oluşuyor her bir sorunun ortalama 5 cevap seçeneği var.
    yaklaşık 15000 kişi bu anketi dolduracak.

    Anket sonuçlarını görüntülemeye çalıştığımızda her bir sorunun her bir seçeneğine kaç tane oy kullanılmış ayrı ayrı mysql_num_rows ile saydırıyoruz bu da her bir soru için 5 dersek 70 soru için 350 mysql_num_rows kullanılmış oluyor ver her sorgu yaklaşık 3000 satırlık bir sonuç dönderdiği için sonuçları görüntüleme sayfası çok geç açılıyor.

    Bunu farklı yöntemlerle sunucuyu daha az yorarak yapılabildiğini duydum forumda ilgili yazılardada anlayabileceğim birşey bulamadım yardımcı olursanız seviniri.

  2. #2
    Ceviz Üyesi
    Üyelik Tarihi
    12/2009
    Mesaj
    23

    Varsayılan

    countu kullanın. daha performanslıdır

  3. #3
    Bahadır Malkoç
    Üyelik Tarihi
    06/2003
    Yer
    Ankara
    Mesaj
    2,707

    Varsayılan

    Veritabanı yapınızı görmeden isabetli bir yorum yapmak kolay değil ancak GROUP BY ve/veya COUNT ile sorgu sayınızı azaltmayı deneyin.
    Msnden ve özel mesaj ile lütfen yardım istemeyin...

  4. #4
    Ceviz Üyesi
    Üyelik Tarihi
    04/2009
    Yer
    Gemlik / BURSA
    Mesaj
    246

    Varsayılan count kullanımı

    $toplam = @mysql_query(“select count(*) from tablo”);
    $toplam = @mysql_result($toplam, 0);

    şeklinde kullanabilirsiniz...
    aşağıda daha önceden yazdığım bir yazıda anlatmıştım
    http://www.dahiweb.com/php-ile-verileri-gosterme
    kolay gelsin

  5. #5
    Ceviz Üyesi
    Üyelik Tarihi
    05/2007
    Mesaj
    71

    Varsayılan

    veritabanımda oylar diye bir tablo var tablodaki sütunlar şöyle:
    oyid baslikid soruid secenekid kullanici

    Bir kullanıcı herhangi bir soruya oy kullandığında bu tabloya bir satır ekleniyor.
    her kullanıcı için 70 satırdan 15000 kullanıcı için 750000 satır oluşuyor bu tabloda

    ben sonuçları bu tablodan şu şekilde çekiyorum
    $sor= mysql_query("select * from oylar where baslikid='$baslikid' and soruid='$sorid' and secenekid = '$secenekid'");
    $say = mysql_num_rows($sor);

    bunu her bir sorun her bir seçeneği için yapıp tek sayfada ekrana bastırıyorum.

    Count ve Group by ile ilgili küçük bir örnekle açıklama yapabilirmisiniz?
    sql bilgim biraz kıt da...






    cevaplarınız için teşekkür ederim. Group by ile ilgili bir örnek de verebilirseniz denemem açışından daha faydalı olur bir de hangi yöntem daha performaslı olur kısaca bilgi verirseniz çok memnun olurum şimdiden teşekkürler iyi çalışmalar...

  6. #6
    Üyeliği İptal Edildi
    Üyelik Tarihi
    01/2007
    Yer
    Ana Kartın hemen yanı başından sağa dön. Orada oturuom.
    Mesaj
    766

    Varsayılan

    Alıntı devadam, mesajından alıntı: Mesajı Gör
    veritabanımda oylar diye bir tablo var tablodaki sütunlar şöyle:
    oyid baslikid soruid secenekid kullanici

    Bir kullanıcı herhangi bir soruya oy kullandığında bu tabloya bir satır ekleniyor.
    her kullanıcı için 70 satırdan 15000 kullanıcı için 750000 satır oluşuyor bu tabloda

    ben sonuçları bu tablodan şu şekilde çekiyorum
    $sor= mysql_query("select * from oylar where baslikid='$baslikid' and soruid='$sorid' and secenekid = '$secenekid'");
    $say = mysql_num_rows($sor);

    bunu her bir sorun her bir seçeneği için yapıp tek sayfada ekrana bastırıyorum.

    Count ve Group by ile ilgili küçük bir örnekle açıklama yapabilirmisiniz?
    sql bilgim biraz kıt da...






    cevaplarınız için teşekkür ederim. Group by ile ilgili bir örnek de verebilirseniz denemem açışından daha faydalı olur bir de hangi yöntem daha performaslı olur kısaca bilgi verirseniz çok memnun olurum şimdiden teşekkürler iyi çalışmalar...

    http://dev.mysql.com/doc/refman/5.0/...ting-rows.html

  7. #7
    Ceviz Üyesi
    Üyelik Tarihi
    05/2007
    Mesaj
    71

    Varsayılan

    Arkadaşlar işin içinden çıkamadım
    veritabanımda oylar diye bir tablo var tablodaki sütunlar şöyle:

    oyid baslikid soruid secenekid kullanici

    şimdi diyelimki 1. sorunun soruid si 1
    ve id leri 1 2 3 4 5 olan 5 tane seçenek var
    1. soru için bu seçeneklerden her birine kaç tane oy kullanılmış saydırıp yazdırmak istiyorum. Tek bir sorgu ile yapılabiliyor sanırım ama nasıl olacağını çözemedim. ben şu anda her biri için bir sorgu yapıyorum 1 soru için 5 sorgu yapmış oluyorum 60 soru var ve binlerce oy var durum böyle olunca sistem kitleniyor

  8. #8
    "Watashi wa L des"
    Üyelik Tarihi
    02/2010
    Yer
    Çikolata,Kek :D
    Mesaj
    2,740

    Varsayılan

    Tek sorguda sözkonusu soruya ait bütün seçeneklerin sayısı şöyle olabilir. Denemedim ama başka bir örnekten yola çıkarak hazırladım. 'id' adında bir alan olduğunu varsaydım;

    $sor= mysql_query("select secenekid,COUNT(id) from oylar where baslikid='$baslikid' and soruid='$sorid' GROUP BY secenekid");

    //yazdırmak için
    echo "'$baslikid' başlıklı anketin $sorid. sorusu için:"
    while($row = mysql_fetch_array($result)){
    echo $row['secenekid'] . ". Seçenek : " . $row['COUNT(id)'] . " oy.";
    echo "<br />";
    }
    "Kafanı kullanırsan, tatlı yemene rağmen şişmanlamazsın..." L.Lawliet
    Kurt Bilişim <- Yine durdu, hiçbirşey yapmıyorum...

  9. #9
    Ceviz Üyesi
    Üyelik Tarihi
    05/2007
    Mesaj
    71

    Varsayılan

    Alıntı warekurt, mesajından alıntı: Mesajı Gör
    Tek sorguda sözkonusu soruya ait bütün seçeneklerin sayısı şöyle olabilir. Denemedim ama başka bir örnekten yola çıkarak hazırladım. 'id' adında bir alan olduğunu varsaydım;

    $sor= mysql_query("select secenekid,COUNT(id) from oylar where baslikid='$baslikid' and soruid='$sorid' GROUP BY secenekid");

    //yazdırmak için
    echo "'$baslikid' başlıklı anketin $sorid. sorusu için:"
    while($row = mysql_fetch_array($result)){
    echo $row['secenekid'] . ". Seçenek : " . $row['COUNT(id)'] . " oy.";
    echo "<br />";
    }
    Çok teşekkür ederim tam istediğim gibi...


 

Konu Bilgileri

Users Browsing this Thread

Şu an 1 kullanıcı bu konuya bakıyor. (0 üye ve 1 ziyaretçi)

Sık Kullanılanlar

Sık Kullanılanlar

Mesaj Yazma Hakları

  • Yeni mesajgöndermezsiniz
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajınızı düzenleyemezsiniz
  •  
Yukarı Çık