Завдання: Оптимізація Запитів
Припустимо, нам потрібно отримати лише ті номери рахунків, які здійснили хоча б одну транзакцію.
У цьому завданні наведено запит, який не оптимізовано. Ваше завдання — переписати його більш оптимальним способом.
Ось перелік основних технік переписування запитів для підвищення оптимізації:
-
Явно вказуйте стовпці: замість використання зірочки (
*) вказуйте назви стовпців у запитах для кращої продуктивності, читабельності та підтримки; -
Мінімізуйте вкладені запити: зменшуйте використання підзапитів для оптимізації продуктивності. Розглядайте альтернативи, такі як об'єднання (join) або похідні таблиці, щоб уникнути складності та додаткових витрат;
-
Уникайте багаторазового використання оператора IN: обмежуйте використання оператора
INу запитах, щоб не впливати на продуктивність. Натомість розглядайте використання операторівJOINабоEXISTSдля більш ефективного виконання; -
Логічно організовуйте об'єднання: починайте об'єднання SQL із основної таблиці, а потім приєднуйте пов'язані таблиці для оптимізації структури запиту та роботи рушія бази даних;
-
Використовуйте обмежувальні умови WHERE: підвищуйте продуктивність запиту, додаючи обмежувальні умови у виразі
WHEREдля фільтрації рядків і прискорення виконання; -
Рефакторинг коду у збережені процедури або функції: інкапсулюйте повторювані фрагменти коду у збережені процедури або користувацькі функції для повторного використання, модульності та спрощення підтримки. Це дозволяє зменшити надлишковість і оптимізувати SQL-запити.
Swipe to start coding
Ваше завдання — написати запит, який повертає список усіх номерів рахунків, з яких було здійснено хоча б одну транзакцію (переказ коштів на інший рахунок). Результати мають бути відсортовані за зростанням номера рахунку.
Щоб зробити ваш запит ефективнішим і зрозумілішим, дотримуйтесь наступних кроків:
- Вибирайте лише стовпець
account_number; - Використовуйте
INNER JOINміж таблицямиBankAccountsтаTransactions; - Не використовуйте оператор
INабо підзапити; - Відсортуйте результат за
account_numberу порядку зростання.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you show me the original unoptimized query?
What database system are we using for this task?
Can you provide an example of the tables involved?
Awesome!
Completion rate improved to 4.55
Завдання: Оптимізація Запитів
Свайпніть щоб показати меню
Припустимо, нам потрібно отримати лише ті номери рахунків, які здійснили хоча б одну транзакцію.
У цьому завданні наведено запит, який не оптимізовано. Ваше завдання — переписати його більш оптимальним способом.
Ось перелік основних технік переписування запитів для підвищення оптимізації:
-
Явно вказуйте стовпці: замість використання зірочки (
*) вказуйте назви стовпців у запитах для кращої продуктивності, читабельності та підтримки; -
Мінімізуйте вкладені запити: зменшуйте використання підзапитів для оптимізації продуктивності. Розглядайте альтернативи, такі як об'єднання (join) або похідні таблиці, щоб уникнути складності та додаткових витрат;
-
Уникайте багаторазового використання оператора IN: обмежуйте використання оператора
INу запитах, щоб не впливати на продуктивність. Натомість розглядайте використання операторівJOINабоEXISTSдля більш ефективного виконання; -
Логічно організовуйте об'єднання: починайте об'єднання SQL із основної таблиці, а потім приєднуйте пов'язані таблиці для оптимізації структури запиту та роботи рушія бази даних;
-
Використовуйте обмежувальні умови WHERE: підвищуйте продуктивність запиту, додаючи обмежувальні умови у виразі
WHEREдля фільтрації рядків і прискорення виконання; -
Рефакторинг коду у збережені процедури або функції: інкапсулюйте повторювані фрагменти коду у збережені процедури або користувацькі функції для повторного використання, модульності та спрощення підтримки. Це дозволяє зменшити надлишковість і оптимізувати SQL-запити.
Swipe to start coding
Ваше завдання — написати запит, який повертає список усіх номерів рахунків, з яких було здійснено хоча б одну транзакцію (переказ коштів на інший рахунок). Результати мають бути відсортовані за зростанням номера рахунку.
Щоб зробити ваш запит ефективнішим і зрозумілішим, дотримуйтесь наступних кроків:
- Вибирайте лише стовпець
account_number; - Використовуйте
INNER JOINміж таблицямиBankAccountsтаTransactions; - Не використовуйте оператор
INабо підзапити; - Відсортуйте результат за
account_numberу порядку зростання.
Рішення
Дякуємо за ваш відгук!
single