У меня есть следующие три таблицы:Оптимизация SQL-запроса с несколькими объединениями
Места проведения, события, экземпляр.
События имеют место проведения (в Местах много событий), а в Событиях много экземпляров.
Например, мероприятие «Терминатор2» - это фильм, который имеет определенное кино в качестве места его проведения и будет иметь много экземпляров этого фильма (даты).
Мне нужно выполнить запрос, который дает мне потерянное Выставочных, которая удовлетворяет следующему:
Место Место х. Место проведения имеет события определенного типа. Thos Events имеют экземпляры в течение определенного периода времени.
Я получил первые два с JOIN на месте и Event (события имеют внешний ключ для места проведения) и предложение WHERE, чтобы убедиться, что события имеют определенный тип. Теперь мне нужно убедиться, что события ТАКЖЕ имеют экземпляры в течение определенного периода времени.
Добавляю ли я еще один JOIN в таблицу Instances (экземпляры имеют внешний ключ для события) и другое предложение WHERE?
Какую производительность следует ожидать от двойного соединения, в два раза, где такой запрос?
Есть ли какие-либо предложения относительно этого лучше?
Является преждевременная оптимизация действительно корень всех зол? http://stackoverflow.com/questions/211414/is-premature-optimization-really-the-root-of-all-evil –
@Rubens: Идея, что нормализация для производительности демонстрирует фундаментальное непонимание того, что нормализация * есть * - референциальная целостность. –
@Rubens да, я хорошо подумал о том, что для производительности я мог бы иметь несколько событий, каждый с другим временем и т. Д. И каким-то образом связывать события так, чтобы, если бы кто-то изменил, я мог бы изменить остальные, но, подумав о последствий было слишком много вопросов. – 2009-11-03 17:34:30