Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
ВнизЗапись дерева в таблицу Найти похожие ветки
← →
webpauk © (2007-11-12 09:36) [0]Дерево (TReeView) представляет отображение файловой структуры.
Записываю в базу.
Количество TReeView.Items порядка 10000.
Соответственно делается аналогичное количество Insert в таблицу. Долго.
Есть варианты ускорения записи?
← →
ЮЮ © (2007-11-12 09:49) [1]Хлтя бф пажи код своего Insert-а в таблицу, чтобы было от чего отталкиваться. БД какая?
← →
Anatoly Podgoretsky © (2007-11-12 10:00) [2]Поскольку это TReeView, а не какой то ДБ вариант, то только отдельным INSERT
← →
Сергей М. © (2007-11-12 10:08) [3]
> Долго.
ПРобуй следующий цикл:
var
CurItem: TTreeNode;
begin
CurItem := TreeView1.Items.GetFirstNode;
while CurItem <> nil do
begin
.. INSERT ..
CurItem := CurItem.GetNext;
end;
end;
← →
webpauk © (2007-11-12 10:12) [4]
> Anatoly Podgoretsky © (12.11.07 10:00) [2]
ладно... оттолкнемся от файловой системы.
как лучше сохранить список файлов и папок в таблицу
← →
Reindeer Moss Eater © (2007-11-12 10:25) [5]Точно так же как и список не файлов и список не папок.
← →
Anatoly Podgoretsky © (2007-11-12 10:26) [6]
> как лучше сохранить список файлов и папок в таблицу
Cm [3]
← →
trubin © (2007-11-12 10:30) [7]
> Соответственно делается аналогичное количество Insert в
> таблицу. Долго.
Насколько долго, какая БД
← →
Reindeer Moss Eater © (2007-11-12 10:40) [8]Какая бы она ни была, но кроме инсерта все равно ничего нет.
← →
ЮЮ © (2007-11-12 10:50) [9]> Какая бы она ни была, но кроме инсерта все равно ничего
> нет.
Но в приложении на дельфи нет SQL-кого INSERT.
А переметрический запрос, например, всяко быстрее выполнится в цикле быстрее, что и для Deplhi, что и для сервера.
Потом, если TReeView не самоцель, а средство достижения цели, то вставлять записи можно и по мере их нахождения, что тоже занимает немалое время. А если выполнять из асинхронно, то к моменту полного построения TReeView будет уже заполнена и таблица.
Автору. А что делать с данными в таюлице, если на диске структура уже изменилась?
← →
Reindeer Moss Eater © (2007-11-12 10:51) [10]И какое отношение имеет к этому "какая БД?"
← →
ЮЮ © (2007-11-12 10:55) [11]> И какое отношение имеет к этому "какая БД?"
Любой вопрос в раздеде БД слкдует начинаться с указания типа БД. :)
← →
Reindeer Moss Eater © (2007-11-12 10:55) [12]асинхронный инсерт выполняется столько же времени что и синхронный.
А переметрический запрос, например, всяко быстрее выполнится в цикле быстрее
Ага. Особенно если там парадокс, dbase или access.
← →
ЮЮ © (2007-11-12 11:03) [13]> асинхронный инсерт выполняется столько же времени что и
> синхронный.
Но выполняться он будет на сервере, а клиент в то время будет искать следующую папку (если ты [9] внимательно читал)
> Ага. Особенно если там парадокс, dbase или access.
Однократный вызов метода Prepare вместо 10000 в цикле, независимо от БД должны дать выигрыi.
З.Ы. И причем здесь парадакс, если, ты уже сказал, "какая БД разницы нет" :)
← →
Reindeer Moss Eater © (2007-11-12 11:04) [14]И кому же мы будем говорить Prepare в случае фаловых БД?
← →
ЮЮ © (2007-11-12 11:17) [15]> И кому же мы будем говорить Prepare в случае фаловых БД?
Да хотя бы компоненту TQuery.
Ибо Prepare все рабно будет вызываться неявно и метод TQuery.PrepareSQL будет вызван 10 000 раз вместо одного.
procedure TQuery.PrepareSQL(Value: PChar);
begin
GetStatementHandle(Value);
if not Local then
SetBoolProp(StmtHandle, stmtUNIDIRECTIONAL, FUniDirectional);
end;
а так "файловая БД" это все-таки не типизированный файл, то и GetStatementHandle(Value) тоже "не слаб"
← →
Anatoly Podgoretsky © (2007-11-12 11:44) [16]
> Однократный вызов метода Prepare вместо 10000 в цикле, независимо
> от БД должны дать выигрыi.
> З.Ы. И причем здесь парадакс, если, ты уже сказал, "какая
> БД разницы нет" :)
Еще как есть, для любой БД не применимо. По сути IB и LocalSQL и зачем вообще вызывать Prepare, оно само исполнится, если запрос построен правильно, а если нет, то ничего не поможет
← →
Anatoly Podgoretsky © (2007-11-12 11:45) [17]Информацию видимо не дождемся.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.051 c