2010-05-01 4 views
0

Мне нужна ваша помощь, чтобы оптимизировать этот запрос 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

+0

Можете ли вы опубликовать план запроса? Используйте 'EXPLAIN SELECT ...' –

+0

Пьер, не пытайтесь выделить синтаксис вручную. Просто отформатируйте его как код (отступ четыре пробела) и отформатируйте его красиво. Я сделал это для вас в этом случае. –

+0

Насколько велики соответствующие наборы данных? Я замечаю, что нет предложений 'WHERE'; вы действительно хотите, чтобы все комментарии и приложения вернулись? Являются ли предложения LIMIT частью проекта, или вы добавили их во время тестирования? –

ответ

0

Спасибо, ребята & извините Марсело это мой первый раз на Stackoverflow

Первый запрос с EXPLAIN:

possible_keys идентификатор типа SELECT_TYPE таблица ключевых key_len реф строки Дополнительные

1 SIMPLE индекс с NULL date_commentaire 8 NULL 119
1 простого eq_ref ПЕРВИЧНЫХ ПЕРВИЧНОГО 3 c.id_apps 1
-ЛЕГКО U eq_ref ПЕРВИЧНОГО ПЕРВИЧНЫЙ 3 c.id_utilisateur 1

И второй

possible_keys идентификатор типа SELECT_TYPE таблица ключевых key_len реф строка Дополнительной

-ЛЕГКО индекс NULL, NULL, ПЕРВИЧНОГО 3 5336
-ЛЕГКО с eq_ref ПЕРВИЧНОГО ПЕРВИЧНЫМИ 1 a.categorie 1
-ЛЕГКО е eq_ref ПЕРВИЧНЫЙ ПЕРВИЧНЫЙ 3 a.editeur 1

+0

Похоже, у вас есть еще немного, чтобы узнать. SO - это сайт Q & A, а не форум. Материалы, опубликованные как ответы, должны отвечать на вопрос. Информация, которую вы опубликовали, должна быть включена в вопрос. Ознакомьтесь с часто задаваемыми вопросами (перейдите по ссылке вверху страницы). Для получения дополнительной информации о форматировании щелкните оранжевый знак вопроса на панели инструментов редактора сообщений. – outis

+0

Извините, я просто прочитал FAQ – Pierre