В настоящее время я использую следующий запрос для 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 - возможно, так и будет, поэтому, пожалуйста, не говорите мне :)Мне бы очень хотелось узнать, как можно улучшить этот запрос.