Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.09;
Скачать: CL | DM;

Вниз

Запись дерева в таблицу   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.025 c
15-1194465471
Jolik
2007-11-07 22:57
2007.12.09
Макроязык как в 1С:Бухгалтерии...


2-1194873717
PASZLIB
2007-11-12 16:21
2007.12.09
PASZLIB


15-1193175070
Прочее
2007-10-24 01:31
2007.12.09
Как сделать чтобы в OnKeyPress проходило сообщение VK_UP ?


2-1195052926
olevacho_
2007-11-14 18:08
2007.12.09
Компонент для отображения форматированого текста и графики


15-1194337973
Evanescence
2007-11-06 11:32
2007.12.09
Кажется, я убил вирус :)