Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема К вопросу использования параметров в ВТ (число прочтений - 4120 )
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
К вопросу использования параметров в ВТ
22. Июня 2010 :: 12:06
Печать  
Преамбула, по собственному опыту я понимаю что использование условий отбора внутри параметра виртуальной таблицы эффективнее, чем отбор наложенный "сверху" результата.
Ну т.е.
Код
Выбрать все
РегистрСведений.СрезПоследних(<Дата>,Измерение1 В СписокИзмерений1) 


лучше, чем
Код
Выбрать все
РегистрСведений.СрезПоследних(<Дата>) ГДЕ Измерение1 В СписокИзмерений1  


ну или
Код
Выбрать все
РегистрСведений.СрезПоследних(<Дата>)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ СписокИзмерений1 ПО Измерение1 = СписокИзмерений1.Измерение1) 



Но сталкиваясь с кодом написаным 1С в своих операциях я нахожу обратное явление. Ну например в "1С Бух. 2.0" при начислении амортизации список ОС которые подлежат амортизации по НУ считывается во врем. таблицу и потом срезы всех регистров соединяются с этим списком внутренним соединением.
Собственно думая над вопросом, а переделать или нет на условие в параметре, я задумался над другим вопросом, а где этих ОС будет больше, в списке амортизируемых или (например) в регистре местонахождения. Однозначного ответа не нашел.
Отсюда я задумался, а стоит ли переделывать запрос. Кое-какие аргументы в защиту 1С крутятся.
Ну например, в регистре сведений может быть много строк (за разные периоды), срез последних на дату вернет только таблицу актуальных записей которых будет меньше чем амортизируемых ОС, и внутреннее соединение этой таблицы со списком возможно будет эффективнее чем условие IN в параметре.
К сожалению на реальных объемах тест будет только в сентябре, счас остается только "думать и догадываться".

Пы.сы. а буквально парой процедур ниже, в методе РассчитатьАмортизациюНМА сбор данных уже идет с применением условия в качестве параметра ВТ.  Круглые глаза

Если я несу чушь, и вы сомневаетесь в моем психическом и умственном здоровье - высказывайтесь. Но меня больше интересует вопрос, а стоит ли переделать.  Улыбка
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #1 - 22. Июня 2010 :: 12:13
Печать  
Цитата:
срез последних на дату вернет только таблицу актуальных записей

Данное утверждение можно подтвердить или опровергнуть ТОЛЬКО планом запроса в котором видны физические операции выполняемые сервером.
Давай попробуем протестировать на 7-ке? наложение параметров внутри ВТ и за пределами ВТ.
Я кстати недавно тоже задавался данным вопросом. Вот ссылка:
http://www.sql.ru/forum/actualthread.aspx?tid=766559
В ссылке есть и планы запросов и статистика.
Вывод я пока один смог сделать вынос условий за ВТ конкретно в моем случае был равнозначен наложению условий внутри ВТ.
  
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #2 - 22. Июня 2010 :: 12:31
Печать  
Да кстати, вариант "аффтор выпей йаду" ну или "убейсяапстену" тоже рассматривается Подмигивание.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: К вопросу использования параметров в ВТ
Ответ #3 - 24. Июня 2010 :: 07:04
Печать  
Имхо, тут еще многое зависит от сервера БД.
Может быть например оптимизаторы MSSQL и оракла переварят оба варианта запроса и оба будут выполнять одинаково, а postgres и db2 - нет. Или наоборот. Или никто не переварит. Вобщем, реальный план запроса надо смотреть, на реальной заполненной базе.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #4 - 24. Июня 2010 :: 07:19
Печать  
Цитата:
Вобщем, реальный план запроса надо смотреть, на реальной заполненной базе.

Соглашусь. Подниму эту тему когда загоню первую партию данных в программу и посмотрю что будет выдавать профайлер и анализатор.

Пы.сы. крутиться все будет на MSSQL.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #5 - 19. Июля 2010 :: 13:06
Печать  
Есть такой замечательный инструмент - Enterprise Integrator.
В нем есть фича - Трассировка запросов 1С в запросы SDBL и/или запросы МС СКЛ. Работает через технологический журнал 1С на сервере.
Рекомендую посмотреть, многое станет понятнее.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #6 - 19. Июля 2010 :: 14:02
Печать  
кстати напомню про обработку с планом запроса http://infostart.ru/public/56973/. Герман вроде даже хотел ее включить в Enterprise Integrator.
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: К вопросу использования параметров в ВТ
Ответ #7 - 20. Июля 2010 :: 04:42
Печать  
lustin писал(а) 19. Июля 2010 :: 14:02:
кстати напомню про обработку с планом запроса http://infostart.ru/public/56973/. Герман вроде даже хотел ее включить в Enterprise Integrator.

Спасибо, я про нее забыл Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать