mysql внутренний запрос соединения и индекс - PullRequest
0 голосов
/ 25 октября 2011

У меня есть две таблицы:

"badges"

badge_id, merchant_id, badge_title, badge_desc, points_req

"badges_owned"

badge_id, customer_id, badge_points, badge_flag

и мой запрос:

SELECT badges.badge_id, badges.badge_title, badges.points_req, badges_owned.badge_flag, badges_owned.badge_points 
FROM badges 
INNER JOIN badges_owned ON badges.badge_id = badges_owned.badge_id 
WHERE badges_owned.customor_id = $user

Мой вопрос заключается в следующем: является ли этот запрос наиболее эффективным, но более того ... где бы я разместил индексы, чтобы сделать его оптимальным (только для customor_id и badge_id?) Или мне пришлось бы покрыть (никогда не получал это)?

1 Ответ

0 голосов
/ 25 октября 2011

Вы склонны использовать индексы для полей, по которым вы ищете или к которым присоединяетесь.

Посмотрите на ваш запрос выбора, и поля ON и WHERE являются наиболее вероятными кандидатами для индексов.

Имейте в виду, что больше индексов, как правило, означают более быстрые ВЫБОРЫ, но также способствуют более медленным ВСТАВКАМ.Здесь есть компромисс, поэтому не надо ставить индексы всего лишь ради него.

Если вы используете EXPLAIN в своем запросе, он покажет вам план запроса и какие индексы используются.Это поможет вам в выборе места размещения ваших индексов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...