|
Запрос в цикле | ☑ | ||
---|---|---|---|---|
0
Конфигуратор1с
16.09.12
✎
11:35
|
Нужно обработать все элементы нескольких справочников и документов. Вот думаю выбирать все и сразу или по видам объектов. Если все и сразу то данных дофига, а с другой стороны запрос в цикле - как бы некошерно.
|
|||
1
Wobland
16.09.12
✎
11:37
|
подумай про объединение
|
|||
2
IamAlexy
16.09.12
✎
11:40
|
(0) если разово обработка применяется то делай так как тебе быстрее наваять..
если обработка будет формироваться регулярно как правило запрос в цикле это не есть хорошо |
|||
3
Конфигуратор1с
16.09.12
✎
11:41
|
(1)Так речь как раз об этом и идет - то ли все в одном запросе через объединение то ли по видам метаданных. Просто когда будет все в одном запросе боюсь на файловой базе на обычном компе будет очень медленно
|
|||
4
Конфигуратор1с
16.09.12
✎
11:42
|
(2) в том и проблема что регулярно
|
|||
5
IamAlexy
16.09.12
✎
11:42
|
(4) ну тогда думай о всяких там левых соединениях
|
|||
6
IamAlexy
16.09.12
✎
11:43
|
а вообще любая решенная задача состоит из двух событий:
1. работает 2. работает оптимально |
|||
7
DrShad
16.09.12
✎
11:50
|
[Нужно обработать все элементы нескольких справочников и документов] а что конкретно нужно с ними сделать?
|
|||
8
Classic
16.09.12
✎
12:51
|
Голосовалку давай
|
|||
9
sanja26
16.09.12
✎
12:57
|
перебор метаданных в цикле с использованием продолжить никак?
|
|||
10
Nexux
16.09.12
✎
22:39
|
пакетный запрос, не?
|
|||
11
Конфигуратор1с
16.09.12
✎
22:43
|
(9)это в смысле динамический текст запроса? Так я не о том как сделать а как лучше сделать.
(10)А чем он решит проблему производительности? Я так понимаю память он все равно отожрет одинаково что при пакетном запросе что при объединении. |
|||
12
Конфигуратор1с
02.10.12
✎
00:22
|
Апну тему. А то чето мне все равно не спокойно. Ну не работал я с большими базами. Построил я запрос динамически. Выгреб все что нужно и теперь представил что этот запрос отработает на базе 10 летней да с огромным документооборотом. Нет у меня опыта работы с такой базой, но чую радаром что увалит такой запросище сервак. Успокойте кто нибудь мою совесть, а?
|
|||
13
Лефмихалыч
02.10.12
✎
00:24
|
(0) открой для себя план обмена
|
|||
14
Конфигуратор1с
02.10.12
✎
00:25
|
(13)и как он мне в отчете поможет?
|
|||
15
H A D G E H O G s
02.10.12
✎
00:28
|
(12) Че там? Очкуем?
Ничего страшного в запросах к простой табличке в цикле нет |
|||
16
Лефмихалыч
02.10.12
✎
00:28
|
(14) ниипу - ты ж задачу не озвучил, а вместо этого принялся с ходу обсуждать какой-то убогий вариант реализации.
Но плн обмена - это тот самый объект, который при помощи таблицы регистрации изменений поможет тебе избежать запросов в цикле |
|||
17
H A D G E H O G s
02.10.12
✎
00:28
|
Это Остатки выбирать в цикле - дикость, ибо их результат не увалит сервер SQL в аут (ну при разумном наборе измерений)
|
|||
18
H A D G E H O G s
02.10.12
✎
00:31
|
Вообше - прикинь по размеру - не уйдет ли у тебя выборка за 1 мегабайт (ибо такое по дефолту на sql серверах стоит ограничение).
|
|||
19
Конфигуратор1с
02.10.12
✎
00:36
|
(16)озвучил в (0)еще. Отчет, строится по метаданным. Выбираются все записи из выбранных справочников и документов. Вот если взять 20 справочников и 10 документов. Да за 10 лет. Проверить не могу, ибо отчет делаю на маленькой базе, больших нет. Но чето подсказывает что полученные несколько миллионов записей убъют сервак
|
|||
20
H A D G E H O G s
02.10.12
✎
00:37
|
(19) Убьют. Дальше что?
|
|||
21
Лефмихалыч
02.10.12
✎
00:38
|
(19) если ты хочешь меня убедить, что кто-то из юзеров в состоянии переварить отчет с декартовым произведением всего на все остальное за 10 лет, то оставь попытки - я железобетонно убежден, что это отчет ни кому не нужен, т.к. его не осилят.
|
|||
22
H A D G E H O G s
02.10.12
✎
00:39
|
(21) Не пытайся использовать здравый смысл там, где он не нужен.
|
|||
23
Конфигуратор1с
02.10.12
✎
00:39
|
(20)вот. Может выпишите мне индульгенцию на запрос в цикле и отпустите?
|
|||
24
H A D G E H O G s
02.10.12
✎
00:39
|
(23) выбирай порциями по 100000 записей и спи спокойно.
|
|||
25
Конфигуратор1с
02.10.12
✎
00:40
|
(21)-(22)Да это что то типа статистики. Переварят.
|
|||
26
H A D G E H O G s
02.10.12
✎
00:40
|
(21) У тебя классическая проблема рефлексирующего интеллигента - программист должен делать, а не думать!
|
|||
27
Конфигуратор1с
02.10.12
✎
00:41
|
(24)Спасибо, падре. Теперь моя совесть чиста. Когда в меня какашками будут бросать скажу у меня индульгенция с подписью и печатью
|
|||
28
H A D G E H O G s
02.10.12
✎
00:41
|
(21) Сходи интереса ради в алкогольную ветку, или к Дефендеру стукнись, поинтересуйся его макулатурными делами.
|
|||
29
Лефмихалыч
02.10.12
✎
00:42
|
(25) нет в природе пользователя, который что-либо осмысленное может сделать с отчетом в более, чем 5 колонок и 50 строк. А уж с отчетами, которые даже скуль переварить не может и подавно смысла связываться нет.
|
|||
30
France
02.10.12
✎
00:42
|
а чо это за сервер, убиваемый 10 лямами??... или, чо за прог, который себе такое позволяет..
|
|||
31
France
02.10.12
✎
00:43
|
(29) Лефмихалыч, дай зачетку))... а оппонентов учить фасми отправь))
|
|||
32
H A D G E H O G s
02.10.12
✎
00:43
|
(29) Скуль может все переварить. Порциями.
|
|||
33
Конфигуратор1с
02.10.12
✎
00:44
|
(30)Опять началось.
(29)ну это ты зря. Была у меня аналитик. Она универсальный отчет нашла и все. Никакие отчеты ей больше не нужны были))) |
|||
34
petrowsky
02.10.12
✎
00:45
|
(25) так если это что-то вроде статистики, может при записи документа/справочника помещать нужные данные в один регистр, а потом уже из него тянуть
|
|||
35
Лефмихалыч
02.10.12
✎
00:47
|
(33) потому, что она не работой занималась а с усердием, достойным восхищения, нарабатывала себе репутацию эдакого шамана или оракула, которые хер ее знает, что там и как делает, но если ее уволить, то все пропало - ни кто не знает, что и как и чем и зачем и почему она делает
|
|||
36
France
02.10.12
✎
00:48
|
(33) ок, за "10 лямов" снимаю... а отчет, который не умещается на экране, сам по себе не нужен.... другое дело, что его скинут в эксель и начнут рихтовать... но, тогда опять - вопрос какой гад его писал??
|
|||
37
H A D G E H O G s
02.10.12
✎
00:50
|
(35) Конечно, конечно.
|
|||
38
Лефмихалыч
02.10.12
✎
00:51
|
(37) не надо меня успокаивать - это бесит
|
|||
39
H A D G E H O G s
02.10.12
✎
00:53
|
Ты какой-то агрессивный.
|
|||
40
France
02.10.12
✎
00:54
|
это нормально - агрессия, когда элементарных вещей не разумеют
|
|||
41
Конфигуратор1с
02.10.12
✎
00:55
|
Как же вам с юзверями не везло(((
|
|||
42
Лефмихалыч
02.10.12
✎
00:55
|
(39) отнюдь - я предельно дружелюбен и голову оторву любому, кто с этим не согласен
|
|||
43
H A D G E H O G s
02.10.12
✎
00:56
|
(41) Или наоборот
|
|||
44
France
02.10.12
✎
00:56
|
(41) тэкс, что за обобщения, и в чем невезение?))
|
|||
45
Конфигуратор1с
02.10.12
✎
00:58
|
Я изза вас с танчиков вышел. Тогда слушайте
(44) "а отчет, который не умещается на экране, сам по себе не нужен". Грамотным пользователям, которые работают а не фигней маются, нужны отчеты разные. И большие и маленькие.))) |
|||
46
Лефмихалыч
02.10.12
✎
00:59
|
(45) ну, да - фкугсе - они их печатают, а потом линейкой крыжат. Иначе шреддеру кушать нечего
|
|||
47
France
02.10.12
✎
00:59
|
(45) сам какими либо отчетами для себя пользуешся, помимо того, что для других пишешь))
|
|||
48
H A D G E H O G s
02.10.12
✎
01:01
|
(47) Настоящие пацаны отчетами не пользуют.
Настоящие пацаны смотрят запросы в enterprise manager |
|||
49
France
02.10.12
✎
01:02
|
(48) согласен... только с условием, что настоящие пацаны знают Group By c havig
|
|||
50
Конфигуратор1с
02.10.12
✎
01:03
|
(47)пользуюсь штатными и вот начал делать группу отчетов для типовой для контроля за юзверями. А то задрался их ошибки вылавливать типовыми отчетиками в две колонки и 5 строк(((
|
|||
51
France
02.10.12
✎
01:05
|
(50) попробуй искоренять причины, говорят последствия не придется разгребать))
|
|||
52
Конфигуратор1с
02.10.12
✎
01:05
|
(51)Причину искоренить не могу - бущек убить не разрешает ук, руководство не разрешает править типовую конфигурацию. (((
|
|||
53
France
02.10.12
✎
01:06
|
поставлю ка я (с) на 51 ))
|
|||
54
Конфигуратор1с
02.10.12
✎
01:08
|
(51)Когда пользователю написал в картинках инструкцию детальную и подробную, стрелочками прорисовал какие кнопочки за какими нажимать. Раз десять показал и рассказал, а они все равно умудряются делать одни и те же ошибки на протяжении полгода(((
|
|||
55
GANR
02.10.12
✎
11:32
|
ТекстЗапроса = "";
Для Каждого ОбъектМетаданных Из Метаданные.Документы Цикл Если ТекстЗапроса <> "" Тогда ТекстЗапроса = ТекстЗапроса + " |ОБЪЕДИНИТЬ ВСЕ |"; КонецЕсли; ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ | """ + ОбъектМетаданных.Имя + """ КАК ИмяОбъектаМетаданных, | Ссылка КАК Ссылка |ИЗ | Документ." + ОбъектМетаданных.Имя; КонецЦикла; ТекстЗапроса = ТекстЗапроса + " |ИТОГИ ПО | ИмяОбъектаМетаданных"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; // нужно учесть одну вещь - SQL не выполнит запрос // если таблиц в конечном запросе более 256 // с этим можно бороться, применив сочетание пакетного запроса // порциями по 256 таблиц с объединением Результат = Запрос.Выполнить(); ВыборкаИмяОбъектаМетаданных = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаИмяОбъектаМетаданных.Следующий() Цикл Выборка = ВыборкаИмяОбъектаМетаданных.Выбрать(); Пока Выборка.Следующий() Цикл // обработка ссылок на документы // выбранного типа КонецЦикла; КонецЦикла; |
|||
56
GANR
02.10.12
✎
11:35
|
(0) Вот как это делается - (55)
|
|||
57
Конфигуратор1с
02.10.12
✎
14:34
|
(56)Спасибо, но я и так знаю. Вопрос - при каком объеме данных ляжет сервер?
|
|||
58
Ахиллес
02.10.12
✎
14:43
|
(57) Найди в типовой конфе от 1С запрос в цикле и успокойся. Что можно прогам из 1С, то можно и тебе.
|
|||
59
Ахиллес
02.10.12
✎
14:44
|
Нельзя запросы в цикле писать только на экзамене в учебном центре, но ты же не на экзамене ;-)
|
|||
60
GANR
02.10.12
✎
14:47
|
(57) Сервер при более чем 256 таблицах, может и не ляжет, но исключение будет вызвано.
>Вопрос - при каком объеме данных ляжет сервер? Сложный вопрос. Я своим запросиком, помню, как-то вешал сервак и блокировал работу всех пользователей во всех базах этого сервака. Таблиц было немного, но я элементарно забыл добавить условие соединения и, как следствие, получил огромную выборку, которая все ресурсы и засорила. |
|||
61
GANR
02.10.12
✎
14:51
|
При соединении N таблиц происходит k1 * k2 * ... * kn проверок условий соединения. Вот и представь, сколько места выборка займет в оперативе, если условие соединения всегда "ИСТИНА", т. е. число строк в выборке k1 * k2 * ... * kn ??? 3 таблицы по 10000 строк соединить по ИСТИНА и получить выборку в 1000000000000 строк, думаю, будет достаточно, чтобы повесить сервак.
|
|||
62
Classic
02.10.12
✎
14:58
|
Делай в цикле - не парь мозг(и скульный сервак).
|
|||
63
sergeante
02.10.12
✎
15:24
|
(60) где ты там соединения увидел?? Там ОБЪЕДИНИТЬ ВСЕ.
|
|||
64
GANR
02.10.12
✎
15:30
|
(63) Да это я просто привел рецепт на тему "как повесить сервак". Но и ОБъединений тоже может быть достаточно, при большом объеме данных.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |