Я основую більшість цього на тому, що я просто намагаюся отримати "правильну" відповідь, тож ви можете виявити, що є деякі проблеми з продуктивністю. Немає сенсу прискорити неправильний запит.
Зрозумійте відносини таблиці - Більшість буде одним до багатьох. Знайте таблицю «багато». Визначте поля, необхідні для ваших приєднань.
Подумайте про сценарії приєднання Ліворуч - Виберіть усіх працівників та їх зарплату за останній місяць. Що робити, якщо вони не отримали зарплату минулого місяця?
Знайте набір результатів: 1) У таблицю введіть вручну принаймні один правильний запис для вашого запиту. 2) Напишіть запит у досить простій формі, щоб визначити, скільки записів потрібно повернути. Використовуйте обидва для тестування свого запиту, щоб переконатися, що приєднання до нової таблиці не змінить результат.
Розбийте свій запит на керовані частини - Вам не потрібно писати це все відразу. Складні запити іноді можуть бути просто набором простих запитів.
Остерігайтеся змішаних рівнів агрегації : Якщо вам потрібно вводити щомісячні, квартальні та річні значення в один набір результатів, вам потрібно буде їх обчислити окремо в запитах, згрупованих за різними значеннями.
Знайте, коли до UNION. Іноді простіше розбити підгрупи на власні оператори вибору. Якщо у вас є таблиця, змішана з менеджерами та іншими працівниками, і в кожному стовпчику ви повинні робити заяви про випадки, засновані на членстві в одній з цих груп, можливо, простіше написати запит менеджера та об'єднання до запиту працівника. Кожен би містив власну логіку. Очевидною необхідністю включати елементи з різних таблиць у різні рядки.
Складні / вкладені формули - намагайтеся послідовно відступати і не бійтеся використовувати кілька рядків. "СЛУЧАЙ, КОЛИ СЛУЧАЙ, КОЛИ СЛУЧАЙ КОЛИЙ" призведе до того, що ви будете ганяти Знайдіть час, щоб продумати це. Збережіть складні обчислення останніми. Спершу виберіть правильні записи. Потім ви атакуєте складні формули, знаючи, що працюєте з правильними значеннями. Перегляд значень, використаних у формулах, допоможе визначити області, де потрібно враховувати значення NULL та де обробляти помилку поділу на нуль.
Тестуйте часто, додаючи нові таблиці, щоб переконатися, що ви все-таки отримуєте бажаний результат і знаєте, який винуватець приєднання чи пропозиції.