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


1С:Предприятие :: 1С:Предприятие 8 общая

Когда имеет смысл писать запросы, а когда лучше использовать циклы

Когда имеет смысл писать запросы, а когда лучше использовать циклы
Я
   sidalexsandr
 
24.12.12 - 10:40
Интересно на примерах. Например один цикл или запрос. Два цикла (один вложенный) или запрос? В каких случаях быстрее будет запрос.
 
 
   Wobland
 
1 - 24.12.12 - 10:43
цикл хорош только в одном случае: когда надо обработать всё. так кода меньше
   Нуф-Нуф
 
2 - 24.12.12 - 10:43
запрос лучше. всегда.
   Reset
 
3 - 24.12.12 - 10:44
Ты спрашиваешь какую-то хе(зачеркнуто) Вопрос слишком расплывчат
   Starhan
 
4 - 24.12.12 - 10:44
(0) запросы инфа 146%, а если будут лечить что все зависит от конкретной ситуации, и необходимо тестировать и выяснять что в конкретном случае будет быстрее и лучше, не верь этим нубасам.
   rs_trade
 
5 - 24.12.12 - 10:44
(0) что лучше, теплое или мягкое?
   vmv
 
6 - 24.12.12 - 10:44
эта темя будет иметь успех, но ее снесут в офф из-за срача с ОПП
*приготовился плакать, грустит*
   Wobland
 
7 - 24.12.12 - 10:44
ну.. понеслось
   rs_trade
 
8 - 24.12.12 - 10:46
(6) Ни фига. Вопрос тупой.
   Starhan
 
9 - 24.12.12 - 10:46
(5) шире шире вопрос задавай, что лучше отвертка или путевка в египет.
   Wobland
 
10 - 24.12.12 - 10:47
(9) конечно путёвка. ведь там можно будет выпить несколько отвёрток
 
 Рекламное место пустует
   rs_trade
 
11 - 24.12.12 - 10:47
(9) В каких случаях надо использовать отвертку, а в каких путевку в египет?
   Starhan
 
12 - 24.12.12 - 10:48
(10) зачем тебе просроченная путевка, когда тебе нужно винт открутить?
   rs_trade
 
13 - 24.12.12 - 10:49
(0) Автор, когда тебе надо извлечь данные из СУБД, используй запросы. Циклы для этого не годятся.
   vmv
 
14 - 24.12.12 - 10:49
Мисс 1С счас в Египте, думаю ответ очевиден)
   Wobland
 
15 - 24.12.12 - 10:49
(12) какой винт? это уже перебор. скажи наркотикам нет
   vmv
 
16 - 24.12.12 - 10:50
(13) а запросы в цикле?)
   acsent
 
17 - 24.12.12 - 10:50
(2) не всегда. Иногда лучше читабельность чем + к быстродействию 5%
   rs_trade
 
18 - 24.12.12 - 10:51
(16) Зтот вариант мы рассмотрим на следующем уроке. Пока или запрос или цикл.
   Mikeware
 
19 - 24.12.12 - 10:52
Если не получается писать запросы вместо использования циклов - используй запросы вместо писания циклов.
   Reset
 
20 - 24.12.12 - 10:54
Почему запрос в цикле можно, а цикл в запросе нельзя?
   Mikeware
 
21 - 24.12.12 - 10:55
(20) при желании - можно :-)
   ДенисЧ
 
22 - 24.12.12 - 11:00
(14) это потому, что у неё отвёртки не было...
   Reset
 
23 - 24.12.12 - 11:02
(22) Это философия получается. Кто с отверткой - сидит на морозе и крутит. У кого не оказалось - в Египте. Хм.
   Axel2009
 
24 - 24.12.12 - 11:02
(2) нарастающий итог? =)
   ДенисЧ
 
25 - 24.12.12 - 11:02
(23) почему на морозе?
   rs_trade
 
26 - 24.12.12 - 11:05
(25) потому что с голой .опой.
   Гефест
 
27 - 24.12.12 - 11:05
ну-ну, попробуйте-ка написать бесконечный запрос
   sidalexsandr
 
28 - 24.12.12 - 11:06
(2), (4) - спасибо.
   ДенисЧ
 
29 - 24.12.12 - 11:06
(26) ааа.. Ну да, с голой - лучше сидеть в египте, там теплей...
   Wobland
 
30 - 24.12.12 - 11:07
(24) есть такое
   rs_trade
 
31 - 24.12.12 - 11:07
(28) не верь этим нубасам. циклы лучше.
   sidalexsandr
 
32 - 24.12.12 - 11:08
(31) Замерял время выполнения ?
   vde69
 
33 - 24.12.12 - 11:09
Цикл нужно использовать в случаях
1. неизвестное количество итераций/вложений (частный случай - рекурсия)
2. фиксировано/малое количество итераций с неудобными условиями (частный случая в каждой итерации меняем параметры запроса)

во всех остальных случаях лучше запрос
 
 
   Wobland
 
34 - 24.12.12 - 11:09
(32) я замерял обращение к РС с отбором и запросом. монопенисуально
   rs_trade
 
35 - 24.12.12 - 11:09
(32) а как собрать текст динамического запроса запросом? тут цикл лучше.
   Starhan
 
36 - 24.12.12 - 11:11
(35) еще спроси как запросом в ТЧ данные поменять :)
   el-gamberro
 
37 - 24.12.12 - 11:12
Если ты уверен что соединения в запросе только одно и это будет Nested Loop, то цикл более понятен и +5% к быстродействию.
Все остальное только запросом.
   sidalexsandr
 
38 - 24.12.12 - 11:13
(33) Хороший ответ. Спасибо.
   sidalexsandr
 
39 - 24.12.12 - 11:14
(37) Спасибо. Можеш пример привести для лучшего понимания.
   el-gamberro
 
40 - 24.12.12 - 11:16
(39) Соединение циклом в скуле традиционно используется когда есть 2 выборки, котрое нужно соеденить, причем вторая очень маленькая.
   rs_trade
 
41 - 24.12.12 - 11:24
(39)

Nested Loops – физический оператор, представляющий Inner Join, Left Outer Join, Left Semi Join, и Left Anti Semi Join операции. Соединения nested Loops представляют поиск по внутренней таблице для каждой строки внешней таблицы, обычно использующий какой-то индекс. MS SQL Server решает, основываясь на предугадывании стоимости, стоит ли рассортировывать внешний выход с целью улучшения положения поисков индекса над (по) внутреннему входу. Возвращаются любые строки, которые соответствуют дополнительному указателю в колонке Argument, (основываясь на представленной логической операции).
   ERWINS
 
42 - 24.12.12 - 11:29
1. собственный код предсказуемее с точки зрения производительности
2. клиентский код нагружает компьютер клиента и соответственно не нагружает серверные мощности.
3. запрос имеет довольно большие константные издержки

Если требуется получать данные с базы, то запрос лучше
   Леха Дум
 
43 - 24.12.12 - 11:37
Стремиться нужно к тому, чтобы получать данные одним запросом. Цикл только тогда, когда не хватает мозгов на "все в запросе" - но это как правило со временем проходит. Для примера расчет пени с начислением по рабочим дням пятидневки - в цикле с получением на каждый день остатков - занимает 10-15 минут, в запросе - 10 секунд вместе с формированием движений и записи документа. При этом сервер напрягается несравнимо меньше, про клиента вообще речи нет (УФ)
   ERWINS
 
44 - 24.12.12 - 11:42
(43) запрос за частую имеет квадратичную или более, к тому же скорость работы зависит от того какой скл или файловая используется, если автоматические блокировки, то может приводить к блокированию данных....
   ERWINS
 
45 - 24.12.12 - 11:43
(43) предсказать как зависит от размера данных время выполнения запроса практически не возможно в относительно сложном случае
   Privalov
 
46 - 24.12.12 - 11:47
(43) "Стремиться нужно к тому, чтобы получать данные одним запросом." - вот кто тебе такую глупость сказал? Сам придумал или слова чужие повторяешь?
   ERWINS
 
47 - 24.12.12 - 11:48
(46) вместо 10 запросов лучше один большой, пусть и возвращающий дофига ТЗ - существенно меньше константные затраты
   Privalov
 
48 - 24.12.12 - 12:04
(47) А, про читаемость кода уже вообще ни кто не беспокоится?
   Ymryn
 
49 - 24.12.12 - 12:05
(36) Не столь и сложно. Сначала запросом хавается табличная часть, помещается в первую таблицу пакетника, потом эта таблица обрабатывается в запросе должным образом, через Выбор Когда ... Конец, после чего запрос выполняется, выгружается в таблицу значений, таблица значений загружается в табличную часть. Было бы желание извратиться и сделать все запросом.
 
 Рекламное место пустует
   palpetrovich
 
50 - 24.12.12 - 12:12
когда уже будет как в американском кино, навпечатал "найти митсера Смита" или "подобрать пароль" - 30 секунд - и вуаля, пожинай плоды :)
   hhhh
 
51 - 24.12.12 - 12:28
(0) тут всё дело в единицах измерения. Циклы измеряются в минутах, а запросы в секундах.
   aka AMIGO
 
52 - 24.12.12 - 12:45
(46) эту "глупость" - огромные запросы, один на всю идею - я видел в стандартной конфигурации УПП в 2008-2009г., тогда еще 8.1, думаю, они благополучно перекочевали в последующие конфы.
   aka AMIGO
 
53 - 24.12.12 - 12:46
+52  "глупость" идет от 1с, однозначно.. там все такие работают :)


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