Мне нужна ваша помощь, чтобы оптимизировать этот запрос mysql, оба находятся в моих медленных журналах запросов.Оптимизация запросов MySQL JOIN
SELECT a.nom, c.id_apps, c.id_commentaire, c.id_utilisateur,
c.note_commentaire, u.nom_utilisateur
FROM comments AS c
LEFT JOIN apps AS a ON c.id_apps = a.id_apps
LEFT JOIN users AS u ON c.id_utilisateur = u.id_utilisateur
ORDER BY c.date_commentaire DESC LIMIT 5;
Существует индекс MySQL на c.id_apps, a.id_apps, c.id_utilisateur, u.id_utilisateur и c.date_commentaire.
EXPLAIN результат:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra 1 | SIMPLE | c | index | NULL | date_commentaire | 8 | NULL | 119 | 1 | SIMPLE | a | eq_ref | PRIMARY | PRIMARY | 3 | c.id_apps | 1 | 1 | SIMPLE | u | eq_ref | PRIMARY | PRIMARY | 3 | c.id_utilisateur | 1 |
SELECT a.id_apps, a.id_itunes, a.nom, a.prix, a.resume, c.nom_fr_cat, e.nom_edit
FROM apps AS a
LEFT JOIN cat AS c ON a.categorie = c.id_cat
LEFT JOIN edit AS e ON a.editeur = e.id_edit
ORDER BY a.id_apps DESC LIMIT 20;
EXPLAIN результат:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra 1 | SIMPLE | a | index | NULL | PRIMARY | 3 | NULL | 5336 | 1 | SIMPLE | c | eq_ref | PRIMARY | PRIMARY | 1 | a.categorie | 1 | 1 | SIMPLE | e | eq_ref | PRIMARY | PRIMARY | 3 | a.editeur | 1 |
Существует индекс MySQL на a.categorie, c.id_cat, a.editeur, е. id_edit и a.id_apps
Thanks
Можете ли вы опубликовать план запроса? Используйте 'EXPLAIN SELECT ...' –
Пьер, не пытайтесь выделить синтаксис вручную. Просто отформатируйте его как код (отступ четыре пробела) и отформатируйте его красиво. Я сделал это для вас в этом случае. –
Насколько велики соответствующие наборы данных? Я замечаю, что нет предложений 'WHERE'; вы действительно хотите, чтобы все комментарии и приложения вернулись? Являются ли предложения LIMIT частью проекта, или вы добавили их во время тестирования? –