Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1194849387
webpauk
2007-11-12 09:36
2007.12.09
Запись дерева в таблицу


2-1194869688
Kick
2007-11-12 15:14
2007.12.09
Проблема с TStringList


6-1172805876
ШкодЕныш
2007-03-02 06:24
2007.12.09
Избитый вопрос: TCP/IP - много клиентов-один сервер


2-1194958126
Ega23
2007-11-13 15:48
2007.12.09
Приведение Boolean к Integer


9-1164339612
grouzd)ev
2006-11-24 06:40
2007.12.09
А не проводить ли нам небольшие игры по кодингу? (ч. 5)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский