Пов’язані підзапити і об’єднання.

Підзапитом називають запит SELECT, який включається в інший запит в Як параметр або виразу. Вони зазвичай використовуються, щоб генерувати значення або набір результатів, які використовуються в умовах головного запиту.

Співвіднесений підзапит є єдиною відмінністю між записами для головного запиту, так як тільки він залежить від значень, які змінюються від запису до запису. Interbase виконує такий підзапит багато разів, по разу для кожного запису батьківського підзапиту. Обчислення кожного запису є великим програшем в продуктивності по відношенню до непов’язаній підзапитів. Interbase оптимізує незв’язані підзапити поза циклі, виконує їх тільки один раз, використовуючи потім результати як окремий набір даних.

Ось приклад пов’язаного підзапит:

SELECT *
FROM DEPARTMENT D
WHERE EXISTS
( SELECT *
FROM EMPLOYEE E
WHERE E.EMP_NO = D.MNGR_NO
AND E.JOB_COUNTRY = “England”)

А ось приклад ідентичного запиту з використанням об’єднання:

SELECT D.*
FROM DEPARTMENT D JOIN EMPLOYEE E ON D.MNGR_NO = E.EMP_NO
WHERE E.JOB_COUNTRY = “England”

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

Можливість вказувати план запиту була додана в GPRE і DSQL / ISQL. Таким чином, пряма вказівка ​​плану запиту буде працювати в тілі перегляду (View), збереженій процедурі або тригері.

Детальніше цей метод розглянуто тут.

Підготовка запитів та параметри запиту


Interbase підтримує запити з параметром в DSQL для тих випадків, коли зазначений запит буде виконуватися кілька разів з різними значеннями. Наприклад, заповнення таблиці даними може вимагати серію команд INSERT зі значеннями для кожного запису. Застосування параметрезованих запитів безпосередньо збільшує продуктивність, оскільки Interbase зберігає внутрішнє подання запиту та його оптимізований план після одноразової підготовка запиту.

Використання параметрезованих запитів в Delphi відбувається наступними кроками:

Помістіть пойменований параметр в запиті на місці постійної величини. Interbase не підтримує параметри ніде, окрім як в константах, таблиці та імена полів не можуть описуватися параметром.

Підготуйте запит, використовуючи для цього метод Prepare компонента TQuery. Delphi готує запит, якщо він ще не підготовлений кожен раз перед виконанням. Після виконання запиту його підготовка автоматично знімається. Таким чином, підготовка запиту заздалегідь запобігає безглузду підготовку і скасування підготовки при кожному виклику запиту.

Привласніть параметри. Наприклад, для компонента TQuery використовуйте для цього метод ParamByName.

Виконайте запит. Вираження SELECT повинні відкриватися методом Open, а INSERT, UPDATE і DELETE повинні активуватися метом ExecSQL.

При необхідності повторити пункти 3 і 4.

Скасувати підготовку запиту. Це робиться методом Unprepear компонента
TQuery.

У деяких реальних випадках, включають повторювані дії, використання параметрезованих запитів збільшує продуктивність на 100%


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*