Ответ
virusav 27.05.2015 09:18
Выводимая таблица не будет на 1 млн строк, но 1000+ может быть спокойно.
В вашем примере:
1. Первую таблицу надо прокрутить 2 раза (для получения второй таблицы и формирования отчета).
2. Вторую таблицу надо прокрутить 1 раз (для получения третьей таблицы) + сделать из нее хеш таблиц, который потом надо будет прокручивать на каждый заказ по ключу хеша.
3. Третья таблица получается сразу в виде хеша таблиц, который потом надо будет прокручивать на каждую дочернюю заявку по ключу хеша.
В итоге получаем 4 объекта:
1. Таблица 1 в виде table (2 полных прокрутки через menu).
2. Таблица 2 в виде table и hash table (1 полная прокрутка table и прокрутка хеша таблиц на каждую дочернюю заявку).
3. Таблица 3 в виде hash table (прокрутка хеша таблиц на каждую дочернюю заявку).
Так у меня и сделано, но была мысль взять вторую и третью таблицы одним запросом, который превратить в хеш хешей таблиц, т.е. 2 таблицы и 1 хеш хешей таблиц.
Мне казалось, что конструкция
$hData.[заказы.номер_заявки].[заявки.номер_дочерней_заявки].[номер_заказа].поле_из_таблицы_подключения
будет работать быстрее, чем вызов
^if(^Подключения.contains[заявки.номер_дочерней_заявки] && ^Подключения.[заявки.номер_дочерней_заявки].locate($Подключения.[заявки.номер_дочерней_заявки].номер_заказа==$Заказы.код && $Подключения.[заявки.номер_дочерней_заявки].поле1_из_таблицы_подключения==...)){
$Подключения.[заявки.номер_дочерней_заявки].поле2_из_таблицы_подключения
}
Таких проверок может быть несколько на каждое подключение + проверки на разные поля и по разным номерам заказов в одной строке на заказ (таблица 1).
Меня смущает множественный locate по третьей таблице, т.к. это не очень удобно в использовании, а вызов конечного значения из хеша гораздо проще.
Приведенные конструкции с locate будут быстрее, чем получение последнего ключа хеша из примера?
- Хеш хешей из БД или объекта 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