|
Запрос в цикле. | ☑ | ||
---|---|---|---|---|
0
Nuobu
09.02.15
✎
16:01
|
Доброго времени суток.
Хотел узнать, у кого какие случаи бывали при использовании запроса в цикле. Тоесть я не хочу, в принципе, узнавать плохо это или нормально, использовать запрос в цикле, а узнать случаи из практики, где это реально потребовалось. Ну и, естественно, разьяснить, почему именно так. |
|||
1
shuhard
09.02.15
✎
16:04
|
(0) бывали у всех
запрет условный если нужно чтобы работало сейчас - используй |
|||
2
John83
09.02.15
✎
16:04
|
например при сложном алгоритме.
Можно было бы и в запросе сделать, но потом слишком сложно разобраться, что и зачем. |
|||
3
Nuobu
09.02.15
✎
16:07
|
А можно, пожалуйста случаю, когда по-другому - ну просто никак.
Например: задача банкомата не решается без запроса в цикле. |
|||
4
Deon
09.02.15
✎
16:09
|
Перепроведение документов - это цикл, в котором куча запросов )
|
|||
5
kumena
09.02.15
✎
16:10
|
вообще нельзя, но если очень хочется то можно! (с) народ
|
|||
6
Nuobu
09.02.15
✎
16:11
|
(5) А можно пример, где без запроса в цикле у Вас не получилось выполнить задачу.
|
|||
7
shuhard
09.02.15
✎
16:11
|
(3) тебе выписать от форума бумагу с печатью ?
|
|||
8
Krabobor
09.02.15
✎
16:12
|
(0) в принципе нет ситуации в которой нельзя было бы заменить запрос в цикле на другую конструкцию. но все иногда делают.
Делал при стартовом переносе куевой кучи данных. быстродействие было не важно, и сделать надо было быстро. |
|||
9
Garykom
гуру
09.02.15
✎
16:12
|
(0) реально можно, но нежелательно ну или хотя бы порциями или сначала запрос, а потом обработка
|
|||
10
Nuobu
09.02.15
✎
16:14
|
(8) (9) А можно пример?
В моей практике это была задача про банкоматы. Когда есть банкоматы, есть запрос на определённые суммы и есть остатки валют в банкоматах. И без запроса в цикле я обойтись не смог. |
|||
11
shuhard
09.02.15
✎
16:14
|
(8)[ в принципе нет ситуации в которой нельзя было бы заменить запрос в цикле на другую конструкцию]
сомнительное утверждение, крайне |
|||
12
Nuobu
09.02.15
✎
16:14
|
(11) Согласен.
|
|||
13
Garykom
гуру
09.02.15
✎
16:17
|
(6) циклическое удаление объектов из базы, надо удалить один и чтобы он удалился так же надо удалить все которые его затрагивают
без запросов (для ускорения поиска ссылок) в цикле (сначала один объект, потом в список добавляются все связанные и идет проход по этому списку) нереально легко сделать и чтобы шустро работало без этого "поиска ссылок" т.е. если ищем запросом то знаем что он вернет (какие типы объектов) и можно легко сделать обработку того что вернул запрос |
|||
14
Serg_1960
09.02.15
✎
16:18
|
(0) Типовая УПП, заполнение в документах таблицы "Материалы" по списку таблицы "Продукция" с использование спецификаций - там запросов в цикле - вагон и маленькая тележка.
Хе, хе и там ещё круче есть - не просто запросы "в цикле", в цикле циклы с запросами :) (получение аналогов основных материалов спецификаций) |
|||
15
Heckfy
09.02.15
✎
16:18
|
По сабжу у меня есть: Тонкий клиент. Для отображения хода выполнения в интерактивном режиме (заполнение индикатора на форме).
|
|||
16
John83
09.02.15
✎
16:29
|
(13) (14) можно просто было написать - рекурсия ;)
|
|||
17
Garykom
гуру
09.02.15
✎
16:31
|
(16) ну да, рекурсивный запрос это запрос в цикле ))
|
|||
18
Лефмихалыч
09.02.15
✎
16:40
|
(0) в общем случае это катастрофическое падение быстродействия и избыточный трафик. Но бывают случаи, когда иначе ни как. Но это редко.
|
|||
19
Лефмихалыч
09.02.15
✎
16:43
|
случаи из практики: некая обработка должна заполнить документ по данным из csv-файла. Обработку запустили, файл на полторы тысячи строк скормили, обработка тужилась пару часов и сдохла, обожравшись памятью.
После того, как ликвидировали запрос в цикле и прочий говнокод, тот же файл обработка успешно обмаслала за полминуты. |
|||
20
Nuobu
09.02.15
✎
16:58
|
(19) Не, ну когда плохой код, это понятно.
Я сам против такого. |
|||
21
Лефмихалыч
09.02.15
✎
17:03
|
(20) основное время там уходило на херову тучу Запрос.Выполнить() идущих ПОДРЯД ВНУТРИ цикла, остальное говнище вносило от силы 10% в общее уныние
|
|||
22
Nuobu
09.02.15
✎
17:04
|
(15) Есть возможность обойти это?
Чтобы что-то выполнялось на сервере, а процесс выполнения, не важно каким способом, отображался для пользователя? |
|||
23
боксер
09.02.15
✎
17:05
|
(0)все типовые так работают
|
|||
24
Heckfy
09.02.15
✎
17:07
|
(22) Штатно нет. Можно извратиться конечно...
|
|||
25
Лефмихалыч
09.02.15
✎
17:10
|
(22) а надо ли это обходить? ведь по сути любая обработка ожидания - это запрос в цикле. Это штатный механизм и тут просто нужно кодить, воткнув голову в розетку с полным пониманием ,что ты делаешь и как это отражается на общей производительности системы
|
|||
26
Nuobu
09.02.15
✎
17:20
|
(25) А какой есть способ показать процесс выполнения?
|
|||
27
H A D G E H O G s
09.02.15
✎
17:23
|
(0)
Выборка порциями больших данных, обход родителей элемента справочника. Во всех остальных случаях запроса в цикле быть не должно. |
|||
28
Ndochp
09.02.15
✎
17:24
|
(26) А ты рассчитать его можешь, процесс этот? Или только 0% - 100%?
Квери аналайзер, блин, скулевый выводи со списком текущих запросов и расчетом плана выполнения. (или как там дебаггер у MSSQL называется? |
|||
29
Heckfy
09.02.15
✎
17:32
|
Сам не тестил, но вот один из извратов: http://infostart.ru/public/200861/
|
|||
30
ДемонМаксвелла
09.02.15
✎
17:36
|
(0) вызов многих типовых функций в цикле - например определение спецификации по умолчанию - это по сути запрос в цикле. В итоге старался всё оптимизировать до одного запроса.
|
|||
31
Heckfy
09.02.15
✎
17:36
|
(30) И?? Сервак упал по нехватке памяти? :)
|
|||
32
ДемонМаксвелла
09.02.15
✎
17:39
|
(31) нет. отчет вначале выполнялся пять минут, потом 20 секунд
|
|||
33
igork1966
09.02.15
✎
17:44
|
(0) Единственный раз столкнулся с падением запроса на 32битном сервере (недостаток памяти, очень большой результат запроса)... пришлось кусками выбирать данные...
|
|||
34
GROOVY
09.02.15
✎
17:58
|
Получение базы для произвольных видов расчета и произвольных приоритетов не сделать без запроса в цикле.
|
|||
35
SUA
09.02.15
✎
18:45
|
хитрое соединение подневной таблицы остатки и обороты (+ ТЧ документа) с собой (2ч - объем 60Кх60Кх14)
заменено на запрос в цикле по дням (15мин - объем 60К х14раз) как-то так |
|||
36
SUA
09.02.15
✎
18:46
|
точнее не 60К а (600-900К)даже
|
|||
37
Адинэснег
09.02.15
✎
18:48
|
(35) кривой запрос
|
|||
38
SUA
09.02.15
✎
18:54
|
(37)а надо
подневные остатки конечно можно и немного более "легким" методом вытащить, чем было реализовано, но по быстродействию примерно то же и выйдет |
|||
39
SUA
09.02.15
✎
18:55
|
+ общее время рег.задания указал а не запроса, каюсь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |