0
Shaman1C
17.09.15
✎
10:59
|
Чем отличается условие, если поставить в виртуальных параметрах виртуальной таблицы, от условия, которого поставить в условиях (никаких соединений нет)?
Я тестировал, получается одинаково, но говорят что разница есть, какая вот, не пойму чето?
|
|
6
ssh-2013
17.09.15
✎
11:10
|
(0)
Для некоторых виртуальных таблиц, способ использования отбора влияет не только на производительность, но и на логику исполнения запроса. Рассмотрим виртуальную таблицу регистра сведений СрезПоследних, на примере регистра сведений КурсыВалют, который имеет следующую структуру:
измерение - Валюта
реквизит - Источник
ресурс – Курс
Где реквизит Источник может принимать значения: интернет, печатные издания.
Задача получить последние курсы валют, значения которых получены из печатных изданий.
1. Запрос с использованием отбора заданного конструкцией языка запросов
Копировать в буфер обмена
ВЫБРАТЬ
Валюта, Курс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних()
ГДЕ
Источник = &Источник
2.Запрос с использованием отбора заданного параметром виртуальной таблицы
Копировать в буфер обмена
ВЫБРАТЬ
Валюта, Курс
ИЗ
РегистрСведений.КурсыВалют.СрезПоследних(, Источник = &Источник)
Хотя данные запросы различаются только способом указания отбора, их результаты, в отличие от случая с запросами по регистру накопления, будут различны. В первом случае в результат не попадут валюты, у которых последний курс установлен не по данным печатных изданий.
Во втором случае будут выбраны последние курсы всех валют, у которых хоть раз курс устанавливался по печатным изданиям. То есть, если в регистр были занесены следующие данные:
Период
Валюта
Курс
Источник
19.03.2003
USD
31.00
Печатные издания
19.03.2003
EUR
34.00
Печатные издания
20.03.2003
USD
31.10
Интернет
То первый запрос вернет:
Валюта
Курс
EUR
34.00
Второй запрос вернет:
Валюта
Курс
USD
31.00
EUR
34.00
|
|