Вход | Регистрация

1С:Предприятие ::

Метки: 

Если запрос в цикле не влияет на производительность - то допустима ли такая конструкция?

Я
   Prog111
 
19.11.17 - 05:41
Запрос в цикле уже притча во языцах - что это неправильно и "неправославно". Я так понимаю - из-за производительности. А вот если заранее известно, что конструкция с запросом в цикле абсолютно не скажется на производительности или некритична для производительности, - то допустима ли она в коде? Например, известно, что проходов будет не более 100, а в выборке тоже не более 10 элементов. Всё будет исполняться за 0,5 секунд.
 
  Рекламное место пустует
   Aleksey
 
1 - 19.11.17 - 06:13
кто то тебе запрещает делать запросы в цикле? Может еще скажешь что нельзя искать по кодо, использовать перейти ...
Все используют, даже 1С в своих типовых и не жужат, а ты чего это решил выпендриться?
   Aleksey
 
2 - 19.11.17 - 06:40
тут скорее вопрос не в производительности, а в блокировки. каждый запрос накладывает блокировку при получении данных Поэтому и считается что один раз запросив и получив массив данных это лучше чем сто раз дергать базу по сети накладывая кучу мелких блокировок.

Но тут вопрос, что для базы лучще
for i=1 to 10 do
select * from table where id=i

или
select * from table where id in (1,2,3,4,5,6,7,8,9,10)


Во общем сильно от задачи зависит, и ИМХО проще написать запрос в цикле на полстранице, чем писать запрос на 10 страниц, но один.

К примеру тебе нужно получить список актуальных ОС, по каждой ОС вывести кучу параметров из других таблиц (сумма амортизации, дата принятия, сроки эксплуатации, автор документа ввода в эксплуатацию и т.д,). Можно конечно постараться вместить в один запрос или запросом получить список ОС, а далее уже в цикле получать по каждой ОС список необходимых данных
   Скиурус
 
3 - 19.11.17 - 08:52
>>Например, известно, что проходов будет не более 100, а в выборке тоже не более 10 элементов.

А что будет если эту ерунду три пользователя сразу запустят?
   vcv
 
4 - 19.11.17 - 09:11
(0) Возможно данные будут невалидны. Если где-то между мелкими запросами другой пользователь изменит данные.
   vi0
 
5 - 19.11.17 - 09:15
(0) это не притча воязыцах, а требование при сдаче экзамена 1с по платформе
требование исключительно по производительности
   Gobseck
 
6 - 19.11.17 - 10:27
(2)>Во общем сильно от задачи зависит, и ИМХО проще написать запрос в цикле на полстранице, чем писать запрос на 10 страниц, но один.

В пользу этого подхода можно еще добавить, что так будет ниже вероятность ошибки и меньше времени на разработку и отладку.

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


Список тем форума
 
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует