![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятная работа БД [D7, ADS]
kyn66 © (2008-12-15 15:34:00)Уважаемые, подскажите , почему возникают проблемы при работе с базами ADS(Local server)? В таблице 3500000 записей. Открывается быстро, однако, когда даю команду Close- висит секунд 10-12. В чем дело? Есть такие-же проблемы и когда делаю SQL-запрос на удаление из базы некоторого кол-ва записей. Тоже выполняется запрос очень долго. Что я не так делаю?
kyn66 (2008-12-15 16:36:00) [1]Пробывал перед закрытием убирать привязку к индексам - все едино, тормоза.
kyn66 (2008-12-15 16:32:00) [2]Изменения были. Однако я просто их открываю(открытие формы) и сразу форму закрываю, см.[5]/ Зависон сикунд 10-15. Могет на компоненте TAdsTable какие параметры убрать/поставить нужно. Ну чудо какое-то. Ладно бы при открытии(пока индексы настроятся, пока все занрузится...) А тут просто Close - и на те тормоза. Я отказываюсь понимать здравый смысл. Вразумите, плис.
Desdechado (2008-12-15 16:06:00) [3]
> почему виснет прога, точнее не виснет а работает так долго
> при закрытии таблицы?
Эти таблицы были открыты только на чтение? Или к ним еще применялись операции изменения? Может, просто изменения записываются на диск перед закрытием.
kyn66 (2008-12-15 15:57:00) [4]Select все работает. Про удаление - это второй вопрос. Меня больше сейчас интересует почему виснет прога, точнее не виснет а работает так долго при закрытии таблицы?
procedure TTiragSLFrm.FormDestroy(Sender: TObject);
begin
Screen.Cursor := crHourGlass;
DM1.SvodTSLTbl.Close;
DM1.TirSLTbl.Close;
DM1.TrkTbl.Close;
Screen.Cursor := crDefault;
end;
Даже прищлось часики поставить.
ANB (2008-12-15 15:51:00) [5]
> Индекс есть. Я не про поиск говорю, а про удаление
Прежде чем удалять, СУБД должна записи найти.
Индекс на таблице TirSL по полю Tir есть ?
Если сделать селект с таким условием - много записей вернет ?
SQL.Clear;
CLose;
Эти строчки, действительно, бессмыслены.
Sergey13 (2008-12-15 15:47:00) [6]> [2] kyn66 © (15.12.08 15:44)
> SQL.Clear;
> CLose;
А зачем эти строчки? Что ты пытаешься закрыть?
kyn66 (2008-12-15 15:44:00) [7]
> Нету индекса.
Индекс есть. Я не про поиск говорю, а про удаление
with TAdsQuery.Create(nil) do
try
AdsConnection := DM1.AdsConnection1;
ParamCheck := True;
SQL.Clear;
SQL.Add('DELETE FROM TirSL WHERE Tir = :p1');
Params[0].Value := tir;
ExecSQL;
SQL.Clear;
CLose;
finally
Free;
end;
> но скорее всего потому как СУБД - версионник.
Не понял, что это такое...
ANB (2008-12-15 15:38:00) [8]
> Есть такие-же проблемы и когда делаю SQL-запрос на удаление
> из базы некоторого кол-ва записей. Тоже выполняется запрос
> очень долго
Нету индекса.
> Открывается быстро, однако, когда даю команду Close - висит
> секунд 10-12.
Про ADS - не знаю, что это такое, но скорее всего потому как СУБД - версионник.