2017-01-23 9 views
0

私の外部のサーバにアップロードする場合は、次のクエリは、悪ページのロードに影響を与えます。この原因の大部分にして、MySQLのクエリは、外部サーバ上のページのロードが遅くなり

SELECT 
    compositions.composer, compositions.composition, compositions.date, compositions.performedBy 
FROM 
    compositions 
    INNER JOIN 
    (SELECT composer 
    FROM compositions 
    WHERE 
     composer IN (
     SELECT composer FROM compositions 
     GROUP BY composer 
     HAVING COUNT(1) < 15 
    ) 
    ORDER BY RAND() 
    LIMIT 1) AS RandComposer 
ON 
    compositions.composer = RandComposer.composer 
ORDER BY compositions.composition 

総ページの読み込み時間が4秒を超えていますクエリーを含むPHPページの待ち時間(see Pingdom screenshot)。

テーブル 'composition'のすべての関連フィールドにはインデックスが付けられています(see phpMyAdmin screenshot)。

私はphpMyAdminでEXPLAINの出力を提供することもできますが、第3のリンクを投稿するには十分な評判がありません。

誰かがクエリを見て、ページ読み込み時間を短縮するためにどのように改善されるかをアドバイスしていただければ幸いです。

答えて

0

クエリを再作成して問題を解決しました。次のコードは遅滞なく読み込まれます。

SELECT 
compositions.composer, compositions.composition, 
compositions.date, compositions.performedBy 
FROM 
    compositions 
INNER JOIN 
    (
     SELECT composer FROM compositions 
     GROUP BY composer 
     HAVING COUNT(*) < 15 
     ORDER BY RAND() 
     LIMIT 1 
    ) AS RandComposer 
ON 
    compositions.composer = RandComposer.composer 
ORDER BY 
    compositions.composition; 
関連する問題