Ответ
Misha v.3 27.05.2015 11:57
/ 27.05.2015 11:58
В вашем примере:
1. Первую таблицу надо прокрутить 2 раза (для получения второй таблицы и формирования отчета).
ну как бы нет.
по ней делаем menu только один раз, при выводе.
2. Вторую таблицу надо прокрутить 1 раз (для получения третьей таблицы) + сделать из нее хеш таблиц, который потом надо будет прокручивать на каждый заказ по ключу хеша.
как бы тоже нет.
явно -- один раз, при выводе.
неявно -- дважды. второй раз при создании из неё хэша таблиц.
в вашем коде, кстати, я не видел хэша таблиц вообще. я видел хэш хэшей:
^СписокЗаявок.[$СписокЗаказов.номер_заявки].foreach[key;value]{...}
3. Третья таблица получается сразу в виде хеша таблиц, который потом надо будет прокручивать на каждую дочернюю заявку по ключу хеша.
хм. я и забыл, что парсер так умеет :)
но на самом деле это то-же самое, что получение таблицы и последующее получение из неё хэша таблиц.
В итоге получаем 4 объекта:
да пофиг, строки (текст) то не копируются. и ячейки тоже. я-же написал, что в результирующих таблицах в хэше таблиц просто помещаются ссылки на строки (строки таблицы) исходной таблицы.
была мысль взять вторую и третью таблицы одним запросом, который превратить в хеш хешей таблиц
так вы потратите много памяти на передачу от sql сервера, т.к. при join количество строк увеличится и будут переданы дублирующиеся текстовые строки, которые вам по сути не нужны.
Мне казалось, что конструкция
...вложенный хэш лукап...
будет работать быстрее, чем вызов
...contains + locate...
да, она будет быстрее почти всегда. contains (вызов метода) + locate (ещё один вызов метода с линейной зависимостью от количества записей, как уже упомянул moko@) будет однозначно медленнее при большом кол-ве строк в таблицах.
P.S. я закончил, т.к. я до конца так и не понял структуру ваших данных, а без этого обсуждать нечего. код для создания вашего вложенного хэша я тоже не понял, для меня он "мутный", странный и черезчур сложный, но оценить его корректность/оптимальность я не могу, т.к. не понимаю структуру данных.
- Хеш хешей из БД или объекта table, virusav 25.05.2015 16:05
- Ответ, Misha v.3 [M] 26.05.2015 16:18
- Ответ, virusav 26.05.2015 16:45
- Ответ, Maxx [M] 25.05.2015 17:00
- Ответ, virusav 25.05.2015 17:08 / 25.05.2015 17:09
- Ответ, Maxx [M] 26.05.2015 01:37
- Ответ, virusav 26.05.2015 09:41
- Ответ, Maxx [M] 26.05.2015 09:54 / 26.05.2015 09:58
- Ответ, virusav 26.05.2015 10:51
- Ответ, Misha v.3 [M] 26.05.2015 16:21 / 26.05.2015 16:22
- Ответ, virusav 26.05.2015 16:31
- Ответ, Misha v.3 [M] 26.05.2015 23:26 / 26.05.2015 23:36
- Ответ, virusav 26.05.2015 23:51
- Ответ, Misha v.3 [M] 27.05.2015 00:39
- Ответ, virusav 27.05.2015 09:18
- Ответ, Misha v.3 [M] 27.05.2015 11:57 / 27.05.2015 11:58
- Ответ, virusav 27.05.2015 14:04 / 27.05.2015 14:10
- ваша схема плохая :), Misha v.3 [M] 28.05.2015 01:24 / 28.05.2015 01:26
- Ответ, virusav 28.05.2015 12:40
- Ответ, Misha v.3 [M] 29.05.2015 04:18
- Ответ, virusav 29.05.2015 09:58
- Ответ, Maxx [M] 27.05.2015 14:49
- Ответ, virusav 27.05.2015 15:11
- ИМХО, max_rip 27.05.2015 15:24
- Ответ, virusav 27.05.2015 16:04
- Ответ, max_rip 27.05.2015 16:40
- Ответ, virusav 27.05.2015 16:42
- Откройте для себя LEFT JOIN и RIGHT JOIN, и INNER JOIN, max_rip 26.05.2015 11:18
- Ответ, dwr 25.05.2015 17:11
- Ответ, virusav 25.05.2015 17:32
- Ответ, moko [M] 25.05.2015 19:19
- Ответ, virusav 25.05.2015 22:07
- Ответ, MoKo 26.05.2015 01:30
- Ответ, virusav 26.05.2015 09:47