2017-01-23 47 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)。

表中的所有相关字段被索引(see phpMyAdmin screenshot)。

我也可以在phpMyAdmin中提供EXPLAIN的输出,但我没有足够的声望发布第三个链接。

如果有人可以查看查询并告知如何改进以减少页面加载时间,我将非常感激。

回答

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;