Я пишу скрипт, который генерирует отчет на основе запроса, который использует несколько таблиц, объединенных вместе.Одним из входных данных для сценария будет список полей, обязательных для заполнения в отчете.В зависимости от запрошенных полей некоторые таблицы могут быть не нужны.Мой вопрос: есть ли [значительное] снижение производительности за включение объединения, если на него нет ссылки в предложении SELECT или WHERE?
Рассмотрим следующие таблицы:
mysql> SELECT * FROM `Books`;
+----------------------+----------+
| title | authorId |
+----------------------+----------+
| Animal Farm | 3 |
| Brave New World | 2 |
| Fahrenheit 451 | 1 |
| Nineteen Eighty-Four | 3 |
+----------------------+----------+
mysql> SELECT * FROM `Authors`;
+----+----------+-----------+
| id | lastName | firstName |
+----+----------+-----------+
| 1 | Bradbury | Ray |
| 2 | Huxley | Aldous |
| 3 | Orwell | George |
+----+----------+-----------+
SELECT
`Authors`.`lastName`
FROM
`Authors`
WHERE
`Authors`.`id` = 1
Превышение:
SELECT
`Authors`.`lastName`
FROM
`Authors`
JOIN
`Books`
ON `Authors`.`id` = `Books`.`authorId`
WHERE
`Authors`.`id` = 1
?
Мне кажется, что MySQL должен просто знать, что он полностью игнорирует JOIN, поскольку на таблицу не ссылаются вSELECT или WHERE предложение.Но почему-то я сомневаюсь, что это так.Конечно, это действительно простой пример.Фактические данные будут гораздо более сложными.
И на самом деле, это не очень большое дело ... Мне просто нужно знать, должен ли мой сценарий быть «умным» в отношении объединений, и включать их толькоесли запрашиваемые поля будут опираться на них.