Это уже заполненная база данных, созданная другим разработчиком.
Я не уверен, что происходило в голове у этого разработчика, когда он создавал таблицы, но в одном из наших сценариев есть этот запрос, включающий 4 таблицы, и он работает очень медленно.
SELECT
a.col_1, a.col_2, a.col_3, a.col_4, a.col_5, a.col_6, a.col_7
FROM
a, b, c, d
WHERE
a.id = b.id
AND b.c_id = c.id
AND c.id = d.c_id
AND a.col_8 = '$col_8'
AND d.g_id = '$g_id'
AND c.private = '1'
ПРИМЕЧАНИЕ: $ col_8 и $ g_id являются переменными из формы
Это только моя теория, что таблицы b и c не имеют индекса, хотя я предполагаю, что разработчик не считал это необходимым, поскольку эти таблицы только сообщают отношения между a и d, где b говорит что данные в принадлежат определенному пользователю, а c сообщает, что пользователь принадлежит группе в d.
Как видите, здесь не используются даже объединение или другие расширенные функции запросов, но этот запрос, который возвращает только около 100 строк, выполняется за 2 минуты.
В любом случае, мой вопрос - просто название этого поста. Будет ли MySQL-запрос выполняться медленнее, если в одной из задействованных таблиц не задан индекс?