![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Возможно ли? [D5, IB5.x]
Captain © (2002-07-02 00:04:00)Есть набор данных. Мне нужно занести в массив или список все значения одного из полей этого набора. Сложность в том, что набор данных огромен по своим размерам (десятки тысяч записей). Поэтому навигация по набору данных и последовательное присваивание элементам массива значений поля займет уйму времени.
Можно ли как-нибудь одним махом заполнить массив (список) значениями поля?
Alexandr (2002-07-03 08:33:00) [1]тип Array как всегда не подойдет.
С ним ни через SP никак не поработать... да и толку от него нету.
1) Array это такой специальный BLOB поэтому уж лучше BLOB использовать: с ним хотя бы све понятно и доступно
2) Этот Array был сделан в Interbase по заказу одной крупной конторы и нужен практически только им
Так что забудьте вы про Array
kaif (2002-07-02 23:53:00) [2]Может для такой цели можно как-то тип ARRAY задействовать?
Это только в виде идеи...
Desdechado (2002-07-02 17:07:00) [3]попробуй сделать это не на клиенте, а в хранимой процедуре. конечно, мороки больше, но ничего лишнего не фетчится.
если нужны промежуточные структуры для хранения данных, обсчитанных ХП, используй специальную таблицу, очищая ее при старте и завершении расчетов.
dimis (2002-07-02 08:39:00) [4]алгоритм вычисления кратчайшего расстояния достаточно трудоемкий процесс. Сложность алгоритма Дейкстры o(n^2). У флойда еще больше. Мой совет не делать динамический рассчет,а просчитать пути зарание (можно ключевые точки),занести все это в таблицу и проиндексировать. Объем базы возрастет, но время обсчета уменьшится на несколько порядков.
Конечно этот вариант проходит если топология графа достаточно стабильна во времении и изменяется редко. Я сам таким занимался.
У меня около 20000 тысяч вершин. Обсчет всех расстояний занял около недели.зато потом выборка занимает доли секунды.
Captain (2002-07-02 08:31:00) [5]Дело в том, что мой набор данных представляет собой множество ID вершин графа. Чтобы привести в действие какой-нибудь алгоритм на графе, например Дейкстры или Флойда, нужно сформировать тип данных "Граф" - массив вершин или, что представляется мне более удобным, список вершин. Но перед этим мне надо все вершины считать из базы, и хотелось бы минимизировать по времени этот процесс.
Леша (2002-07-02 06:45:00) [6]Набор данных сам по себе тоже массив.
kaif (2002-07-02 01:09:00) [7]Само по себе получение такого набора (извлечение записей с сервера с помощью Fetch) занимает больше времени, чем запись оных в массив. Поэтому, я боюсь, хороших времен получить все равно не удастся. А зачем нужно считывать десятки тысяч записей на клиент, если не секрет?