Ben yüklemek için 37 saniye alıyor bir sayfa var. Yükleme işlemi devam ederken bu çatıdan MySQL CPU kullanımını mandal. Bu sayfa için kod yazmadım ve o kadar darboğazı nedeni bana aşikar değil oldukça kıvrık.
Ben (KCacheGrind kullanarak) profilli ve sayfadaki zaman toplu MySQL sorguları (90 zaman% 25 farklı mysql_query çağrılarda harcanan) yaparak geçirmiş olduğunu bulmak.
Sorguları tag_id 25 farklı aramaların her biri değişen aşağıdaki formu alır:
SELECT * FROM tbl_news WHERE news_id IN (select news_id from tbl_tag_relations WHERE tag_id = 20)
Her sorgu böylece 37 saniye tamamen sayfasını yüklemek için ... iyi ölçmek için atılmış bir kaç uzun gecikmeler ile tamamlamak için yaklaşık 0.8 saniye alıyor.
Benim soru, bu soruna neden olan seçmek sorgu İç içe geçmiş ile biçimlendirilmiş yoludur? Yoksa bir milyon diğer şeylerin herhangi biri olabilir? Bu yavaşlık mücadele yaklaşım konusunda herhangi bir tavsiye takdir edilmektedir.
Sorguya EXPLAIN Koşu bana bu veriyor (ama bu sonuçların etkisi konusunda net değilim kötü olacak gibi ... birincil anahtar NULL evet? Döndürülen sonuç sayısı bana yüksek görünüyor gibi görünüyor sonuç sadece bir avuç) sonunda döndürülür:
1 PRIMARY tbl_news ALL NULL NULL NULL NULL 1318 Using where 2 DEPENDENT SUBQUERY tbl_tag_relations ref FK_tbl_tag_tags_1 FK_tbl_tag_tags_1 4 const 179 Using where