• 19-01-2015, 10:48:54
    #1
    Üyeliği durduruldu
    $query_Recordset_otel = sprintf('SELECT ot.*,os.*,op.*,c.idcities,c.cities_name,ob.*,ob1.o telbolgeler_adi as bolge,r.regionname,(SELECT filename FROM oteldosyalar WHERE FKidotel=ot.idotel AND filegroup=0 ORDER BY filepriority LIMIT 1 ) as otellogo FROM ((((((otel ot LEFT JOIN otelsinif os ON ot.FKidotelsinif=os.idotelsinif) LEFT JOIN otelpansiyon op ON ot.FKidotelpansiyon = op.idotelpansiyon) LEFT JOIN cities c ON ot.FKidcities=c.idcities) LEFT JOIN otelbolgeler ob ON ot.FKidotelbolgeler=ob.idotelbolgeler) LEFT JOIN otelbolgeler ob1 ON ob.level1=ob1.idotelbolgeler) LEFT JOIN regions r ON c.cities_FKidregions=r.idregions) LEFT JOIN otelsecimkategori osk ON osk.FKidotel=ot.idotel WHERE ot.idotel=%s', $Widotel_Recordset_otel);



    Sorgu yukarida ki gibi. bu sorguyu yapan .php sayfasını açınca 500 Internal Server Error hatası veriyor ve CPU %99 oluyor sunucuda. Bu sorguyu nasıl daha az cpu harcayacak şekilde düzenleye bilirim? Hatam nerde? Yardımcı olacak kişilere şimdiden çok teşekkür ederim.
  • 19-01-2015, 10:55:28
    #2
    Bu kadar çok join bir arada kullanılırsa sunucuyu yorması normal. Bunun için denormalizasyon işlemlerini araştırmanızı tavsiye ederim.
  • 19-01-2015, 11:07:28
    #3
    Üyeliği durduruldu
    BoluBeyiNet adlı üyeden alıntı: mesajı görüntüle
    Bu kadar çok join bir arada kullanılırsa sunucuyu yorması normal. Bunun için denormalizasyon işlemlerini araştırmanızı tavsiye ederim.
    Konu hakkında bilginiz var ise yukaridaki sorguyu örnek vermek açısından benim için denormalizasyon işlemini yapabilirmisiniz ? İleride bu sorunla karşılasan kişiler içinde yardımcı bir konu olur diye düşünüyorum
  • 19-01-2015, 11:43:18
    #4
    Sorgunun select bölmesi içerisinde * lı alan kullanmak yerine kullandığın kolon isimlerini yazabilirsin, sub query ve left join kullanmak yerine farklı join ihtiyaçları işini çözebilir. Index optimizasyonları konu içerisinde dikkat edilmesi gerekebilir.
  • 19-01-2015, 12:03:25
    #5
    Netweb adlı üyeden alıntı: mesajı görüntüle
    Konu hakkında bilginiz var ise yukaridaki sorguyu örnek vermek açısından benim için denormalizasyon işlemini yapabilirmisiniz ? İleride bu sorunla karşılasan kişiler içinde yardımcı bir konu olur diye düşünüyorum
    Denormalizasyon, sorgudan ziyade veritabanınızdaki tabloları düzelterek veya yeni tablolar oluşturularak yapılıyor. Bu doğrultuda da sorgunuz değişiyor.
  • 19-01-2015, 19:51:21
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Otel logo'sunu çektiğin alt sorgu buna sebep olabilir. Onu kaldırıp dene veya onu da left join ile al.
    Sorguyu sık kullanıyorsan view oluştur. Performansını oldukça artıracaktır.