В настоящее время я работаю над веб-сайтом, который нуждается в некоторых оптимизациях ... так как передняя страница занимает около 15-20 секунд для загрузки, я думал, что некоторая оптимизация будет приятной.MySQL Query optimization
Вот один запрос, который появился на MySQL журнал медленных запросов:
SELECT a.user,a.id
FROM `profil_perso` pp
INNER JOIN `acces` a ON pp.parrain = a.id
INNER JOIN `acces` ap ON ap.id = pp.id
WHERE pp.parrain_visibilite = '1'
AND a.actif = 1
GROUP BY a.id
ORDER BY ap.depuis DESC LIMIT 15;
На profil_perso
(~ 207K линии - содержит электронную почту и профили) Существует perso_id
, что является первичным ключом, есть также id
(внешний ключ) + parrain
(референт) + parrain_visibilite
(показан референт), которые являются индексами.
На acces
есть id
, что является первичным ключом, есть также Depuis (дата регистрации), который индексируется
Тест показывает, что это на самом деле:
Первый раз: +1,94532990456
Последний раз: +1,94532990456
Среднее время: 0,0389438009262
Я пытался поставить его таким образом:
SELECT DISTINCT a.id, a.user
FROM `profil_perso` pp
LEFT JOIN `acces` a ON pp.parrain = a.id
WHERE pp.parrain_visibilite = 1
AND a.actif = 1
AND pp.id != 0
ORDER BY pp.id DESC LIMIT 15;
Еще тест показать это:
Первый раз: +1,96376991272
Последний раз: +1,96376991272
Среднее время: +0,0393264245987
Любой намек снизить время запроса?
Вот полный индексы:
Вход в помещение:
id (primary)
derniere_visite -- last visit
pays_id -- country_id
depuis -- registration time
perso_id -- foreign key to profil_perso primary key
actif -- account status
compte_premium -- if account is premium
profil_perso:
perso_id (primary)
id -- foreign key to acces primary key
genre -- gender
parrain_visibilite -- visibility of referer
parrain -- referer
parrain_contexte
telephone
orientation
naissance -- birthdate
photo -- if it has a picture
Не могли бы вы разместить полные индексы на трех таблицах? Это было бы моим лучшим предположением относительно проблемы, но мне нужно было убедиться, что они будут уверены. – MBCook
Все эти acces.id, acces.ap acces.parrain проиндексированы? – THEn
Это также помогло бы, если бы вы могли объяснить, что вы хотите, чтобы результат был – Greg