我目前正在对 jsPerf 使用以下查询。在可能的情况下,您不知道 jsPerf — 有两个表:pages
包含测试用例/修订版,以及tests
包含测试用例中测试的代码片段。
中目前有 937 条记录pages
和 3817 条记录tests
。
如您所见,加载使用此查询的“Browse jsPerf”页面需要相当长的时间。
查询执行大约需要 7 秒:
SELECT
id AS pID,
slug AS url,
revision,
title,
published,
updated,
(
SELECT COUNT(*)
FROM pages
WHERE slug = url
AND visible = "y"
) AS revisionCount,
(
SELECT COUNT(*)
FROM tests
WHERE pageID = pID
) AS testCount
FROM pages
WHERE updated IN (
SELECT MAX(updated)
FROM pages
WHERE visible = "y"
GROUP BY slug
)
AND visible = "y"
ORDER BY updated DESC
我已经为出现在WHERE
子句中的所有字段添加了索引。我应该添加更多吗?
如何优化此查询?
PS 我知道我可以在 PHP 中实现一个缓存系统——我可能会,所以请不要告诉我 :) 我真的很想知道如何改进这个查询。