Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Торможение IBX по сравнению с BDE [D5, IB5.x]


alehan ©   (2003-01-31 17:45:00) 

CGI-приложение открывает DataSet, отправляет клиенту первые 50 записей и закрывает DataSet. Даже если в запросе получалось несколько тысяч записей, через BDE всё работало достаточно быстро, но иногда глючело: периодически висло! Поэтому я решил осваивать новые для себя технологии.

Поменял TDataBase, TSession, TQuery на TIBDataBase, TIBTransaction, TIBQuery. Заработало сразу, но если в запросе получается много записей, тормозит пропорционально их количеству. В среднем в 2-3 раза медленнее BDE.

Код:


object IBDataBase1: TIBDatabase
DefaultTransaction = IBTransaction1
IdleTimer = 0
SQLDialect = 1
end
object IBQuery1: TIBQuery
Database = DB
Transaction = IBTransaction1
AutoCalcFields = False
CachedUpdates = False
UniDirectional = True
end
object IBTransaction1: TIBTransaction
DefaultDatabase = DB
Params.Strings = (
"read"
"read_committed"
"rec_version")
end

...
IBDataBase1.Open;
IBQuery1.Open;
k:=0;
while (not IBQuery1.EOF) and (k<50) do
begin
Response.Content:=Response.Content+IBQuery1.Fields[0].AsString+"<br>";
inc(k);
IBQuery.Next;
end;
IBQuery1.Close;
IBDataBase1.Close;
...

Подозрение, что он где-то на заключительных этапах делает IBQuery.FetchAll. Вот бы его отучить от этого....

Жду с нетерпением! Спасибо!


alehan   (2003-01-31 18:36:00) [1]

ой, нет, я сам себя обманул...

select id, name, day from table1 where day>:day- это какбы упрощённая версия запроса, на самом деле он генериться динамически, хр.процедура тут не подойдёт


alehan   (2003-01-31 18:16:00) [2]

о! мне пришла мысль! напишу хранимую процедуру.

ни top ни first ни skip не работают

Спасибо!!!


Anatoly Podgoretsky   (2003-01-31 18:08:00) [3]

Проверь поддерживает ли твоя версия IB предикат TOP n


alehan   (2003-01-31 17:59:00) [4]

Он таков:

select id, name, day from table1 where day>:day

причём в table1 порядка 100000 записей и существует индекс по полю day


Anatoly Podgoretsky   (2003-01-31 17:53:00) [5]

Где текст запроса


Наверх

Титульная страница Поиск, карта сайта Написать письмо