|
Когда имеет смысл писать запросы, а когда лучше использовать циклы | ☑ | ||
---|---|---|---|---|
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с, однозначно.. там все такие работают :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |