Зміст:

Anonim

Підзапит - це запит в іншому запиті. Підзапит також може містити інший підзапит. Вони називаються "вкладеними" підзапитами. Приєднання відбувається тоді, коли до двох або більше таблиць вказується в запиті "Від". Різні двигуни баз даних можуть оптимізувати підзапити та приєднуватися по-різному. Наприклад, оптимізатор DB2 перетворить підзапит у приєднання, якщо виконано певні критерії. У деяких випадках приєднання дає кращу продуктивність, ніж підзапит.

Запити бази даних отримують певну інформацію з бази даних.

Що робить підзапит

Підзапит являє собою оператор "SELECT" у розділі "WHERE" або "HAVING" зовнішнього оператора "INSERT", "UPDATE", "MERGE" або "DELETE". Підзапит також називається "внутрішній запит" або "внутрішній вибір". Підзапит може мати пропозицію "FROM" з однією або кількома таблицями і може мати опцію "WHERE", "GROUP BY" або "HAVING". Вона завжди вкладена в дужки.

Переваги та недоліки підзапитів

Підзапити є вигідними, оскільки вони структурують запит, щоб ізолювати кожну частину оператора, виконують ту ж саму операцію, яка зазвичай вимагає складних об'єднань і об'єднань, і легше читати. Підзапити навіть були основою для назви "Structured Query Language" (SQL) з-за їх легко читається структури. Недоліком є ​​те, що ви не можете змінювати таблицю і вибирати з тієї ж таблиці в підзапросі в тій же операторі SQL. Підзапити також можуть зайняти більше часу, ніж приєднання, тому що оптимізатор бази даних обробляє їх.

Що робить приєднання

Більшість підзапитів можна переписати як об'єднання, і більшість об'єднань можна переписати як підзапити. Об'єднання визначає дві або більше таблиць відповідним стовпцем. Таблиці зазвичай з'єднуються на первинних і зовнішніх ключах. Наприклад, таблиця працівника може мати первинний ключ стовпця ідентифікатора працівника, а таблиця розкладу також має стовпець ідентифікатора працівника, який є зовнішнім ключем для таблиці службовця. SQL-приєднання може бути записано як "WHERE employee.empid = timesheet.empid" або "FROM співробітник JOIN розклад часу ON (employee.empid = timesheet.empid)."

Переваги та недоліки об'єднань

Головною перевагою об'єднання є те, що він виконується швидше. Збільшення продуктивності може не бути помітним для кінцевого користувача. Однак, оскільки стовпці спеціально називаються та індексуються та оптимізуються за допомогою механізму бази даних, час пошуку майже завжди буде швидшим, ніж час підзапиту. Є також внутрішні і зовнішні з'єднання, ліве і праве об'єднання, повні приєднання і поперечні з'єднання. Недоліком використання з'єднань є те, що їх не так легко читати, як підзапит. Іншим недоліком є ​​те, що він може збивати з пантелику щодо того, який приєднання є відповідним типом об'єднання, щоб використовувати для отримання правильного бажаного набору результатів.

Які переваги та недоліки приєднання або підзапросу?