Я основываю большую часть этого на попытках получить «правильный» ответ, чтобы вы могли обнаружить, что есть некоторые проблемы с производительностью. Нет смысла ускорять неправильный запрос.
Поймите отношения таблицы - большинство будет один ко многим. Знать таблицу «многие». Определите поля, необходимые для ваших объединений.
Подумайте о сценариях ЛЕВОГО присоединения - выберите всех сотрудников и их зарплату с прошлого месяца. Что если они не получили зарплату в прошлом месяце?
Знайте набор результатов: 1) В электронной таблице вручную введите хотя бы одну правильную запись для вашего запроса. 2) Напишите запрос в достаточно простой форме, чтобы определить, сколько записей должно быть возвращено. Используйте оба из них, чтобы проверить ваш запрос, чтобы убедиться, что присоединение к новой таблице не изменит результат.
Разбейте ваш запрос на управляемые части - вам не нужно писать все сразу. Сложные запросы иногда могут быть просто набором простых запросов.
Остерегайтесь смешанных уровней агрегации : если вам нужно поместить ежемесячные, квартальные и текущие значения в один и тот же набор результатов, вам нужно будет рассчитать их отдельно в запросах, сгруппированных по разным значениям.
Знайте, когда объединяться Иногда легче разделить подгруппы на свои собственные операторы выбора. Если у вас есть таблица, смешанная с менеджерами и другими сотрудниками, и в каждом столбце вы должны делать операторы Case, основанные на членстве в одной из этих групп, может быть проще написать запрос Manager и объединить его с запросом Employee. Каждый из них будет содержать свою собственную логику. Необходимость включать элементы из разных таблиц в разные строки - очевидное применение.
Сложные / вложенные формулы - Старайтесь последовательно делать отступы и не бойтесь использовать несколько строк. «Дело, когда дело, когда дело, когда» сводит вас с ума. Потратьте время, чтобы обдумать это. Сохраните сложные кальки для последнего. Получите правильные записи, выбранные в первую очередь. Затем вы атакуете сложные формулы, зная, что работаете с правильными значениями. Просмотр значений, используемых в формулах, поможет вам определить области, в которых необходимо учитывать значения NULL, и где обрабатывать ошибку деления на ноль.
Тестируйте часто, когда вы добавляете новые таблицы, чтобы убедиться, что вы все еще получаете желаемый набор результатов и знаете, какое соединение или предложение является виновником.