Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Есть ли разница в запросах?
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Базы данных
Vofka
Привет!

Есть 2 запроса:

SELECT
    qwe,
    asd,
    zxc
FROM
    (
        SELECT
            qwe,
            asd,
            zxc
        FROM
            Table
        WHERE
            Table.qwe = qaz
    ) AS HZ


и

SELECT
    qwe,
    asd,
    zxc
FROM
    (
        SELECT
            qwe,
            asd,
            zxc
        FROM
            Table
    ) AS HZ
WHERE
    HZ.qwe = qaz


Есть ли разница между ними по призводительности? Есть мнение, что первый запрос работает быстрее. Да? Нет? Ответ, пожалуйста, обосновывайте либо подкрепляйте линками.
arkadij
Первый запрос быстрее.
Он сначала проводит вложенный SELECT, который усекает выборку для внешнего SELECT (стоящего первой строкой в запросе).


Во втором запросе внутренний вложенный SELECT не уменьшает выборку и поэтому внешний SELECT заново проходится по той же совокупности данных и выбирает строки соответствующие условию. Это двойная работа.
Vofka
Я так понимаю, что сама выборка (ещё с наличием нужных индексов) будет занимать меньшую часть времени. Так? Затратная операция в данном случае будет фильтрация по условию. Так? Но и в первом и втором случае фильтрация будет осуществляться на одинаковом наборе данных. Т.е. реально почувтствуется ли прирост производительности?
sava1
Цитата(Vofka @ 11.09.12, 18:55) необходимо зарегистрироваться для просмотра ссылки
фильтрация будет осуществляться на одинаковом наборе данных


при том на кешированном результате и готовом плане - не думаю, что будет заметна разница
Fynjy
Цитата(sava1 @ 12.09.12, 10:50) необходимо зарегистрироваться для просмотра ссылки
при том на кешированном результате и готовом плане - не думаю, что будет заметна разница

При втором запросе разница может колебаться, как в одну, так и в другую сторону ... )
Batchir
1. Если сам запрос выполнять в СКЛ, то должно выполнять то что описал arkadij.
2. В теории первый должен быстрее работать, на практике же может произойти совсем наоборот (это я к привязке к стороннему ПО говорю)
Например, 1С транслирует запрос на СКЛ сервер так как она это видит, а не так как это хочется СКЛ-серверу. Часто эта трансляция правильная, но может возникнуть ситуация когда при выполнении запроса (1 вариант) СКЛ-сервер выберет не оптимальную схему, в результате чего получим значительное ухудшение производительности. необходимо зарегистрироваться для просмотра ссылки
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.