Имя: Пароль:
1C
1С v8
Когда имеет смысл писать запросы, а когда лучше использовать циклы
,
0 sidalexsandr
 
24.12.12
10:40
Интересно на примерах. Например один цикл или запрос. Два цикла (один вложенный) или запрос? В каких случаях быстрее будет запрос.
1 Wobland
 
24.12.12
10:43
цикл хорош только в одном случае: когда надо обработать всё. так кода меньше
2 Нуф-Нуф
 
24.12.12
10:43
запрос лучше. всегда.
3 Reset
 
24.12.12
10:44
Ты спрашиваешь какую-то хе(зачеркнуто) Вопрос слишком расплывчат
4 Starhan
 
24.12.12
10:44
(0) запросы инфа 146%, а если будут лечить что все зависит от конкретной ситуации, и необходимо тестировать и выяснять что в конкретном случае будет быстрее и лучше, не верь этим нубасам.
5 rs_trade
 
24.12.12
10:44
(0) что лучше, теплое или мягкое?
6 vmv
 
24.12.12
10:44
эта темя будет иметь успех, но ее снесут в офф из-за срача с ОПП

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

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

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