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