Когда я был младшим сотрудником БД, я однажды работал в течение года в отделе маркетинга, где у меня было так много свободного времени, что я выполнял каждое задание 2 или 3 разными способами. У меня появилась привычка писать один мега-селектор, который собирал все за один раз, и сравнивать его со скриптом, который строил промежуточные таблицы выбранных первичных ключей, а затем, как только у меня были правильные ключи, пошел и получил значения данных.
Почти во всех случаях второй метод был быстрее. случаи, когда этого не было при работе с небольшим количеством маленьких столов. Там, где это было наиболее заметно быстрее, были, конечно, большие таблицы и множественные объединения.
Я привык выбирать требуемые первичные ключи из таблицы A, выбирать требуемые первичные ключи из таблицы B и т. Д. Присоединиться к ним и выбрать окончательный набор первичных ключей. Используйте выбранные первичные ключи, чтобы вернуться к таблицам и получить значения данных.
Как администратор БД, я теперь понимаю, что этот метод привел к меньшей очистке кеша данных и стал лучше играть с другими, использующими БД (как упомянул Амир Раминфар).
Однако это требует использования временных таблиц, которые не нравятся некоторым местам / администраторам баз данных (несправедливо на мой взгляд)