Ответ
virusav 25.05.2015 22:07
Адреса я привел в качестве примера.
Для построения отчета нужной взять 1000 записей из одной таблицы, а по ним 5000 - из другой. По этим 5000 надо получить данные из третьей таблицы.
Если выбрать запросом данные из таблиц 2 и 3, а потом их перегнать в хеш, то все намного упростится.
При этом хеш можно сформировать, один раз прокрутив объединенную таблицу, к которой потом уже не будет обращений.
Если оставлять таблицы, то получим цикл на 1000 оборотов и столько же locate.
Для ускорения делаю выборку хеша таблиц из таблицы 2.
В итоге проверка имеет примерно такой вид:
^if(^tTable1.contains[$tTable1.field] && ^tTable1.locate($tTable1.field1==1 && ^tTable3.contains[$tTable1.field2] && $tTable3.field3==1))
т.е. связываем все 3 таблицы в одном, что не особо удобно.
Есть отчеты с бОльшим количеством записей в основном цикле, поэтому интересует, не будет ли вариант с хешем хешей работать быстрее многих 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