Оптимизация выборки mysql

Подскажите пожалуйст разаницу в скорости обработки такого запроса:
SELECT wt.title, wt.url_title, wt.entry_date, wd.field_id_2 AS body,
IF(ft.thread_total, ft.thread_total, 0) AS thread_total
FROM exp_weblog_titles AS wt
LEFT JOIN exp_weblog_data AS wd ON wd.entry_id = wt.entry_id
LEFT JOIN exp_forum_topics AS ft ON ft.topic_id = wt.forum_topic_id
WHERE wt.weblog_id = 2


Или же быстрее так:
SELECT wt.title, wt.url_title, wt.entry_date, wd.field_id_2 AS body,
IF(ft.thread_total, ft.thread_total, 0) AS thread_total
FROM exp_weblog_titles AS wt, exp_weblog_data AS wd, exp_forum_topics AS ft
WHERE wt.weblog_id = 2 AND wd.entry_id = wt.entry_id AND ft.topic_id = wt.forum_topic_id


Вроде как второй выполняется рвоно в два раза быстрее. И как влияет если моног условий добавить.
Буду рад если подскажите какие толковые материалы по оптимизации sql
  • Вопрос задан
  • 2523 просмотра
Пригласить эксперта
Ответы на вопрос 3
taliban
@taliban
php программист
Условия в данном случае влияют косьвенно на скорость, именно у Вас на скорость влияет тип обьединений таблиц, первый LEFT JOIN второй INNER JOIN. Почитав про эти типы соединений Вы узнаете разницу в скорости и какой вариант когда более предпочтителен.
Ответ написан
Комментировать
AlexeyK
@AlexeyK
Используй EXPLAIN SELECT.
Ответ написан
SwampRunner
@SwampRunner
explain select и смотрите используется ли индекс при выборке
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы