Конференция "Базы" » Непонятная работа БД [D7, ADS]
 
  • kyn66 © (15.12.08 15:34) [0]
    Уважаемые, подскажите , почему возникают проблемы при работе с базами ADS(Local server)? В таблице 3500000 записей. Открывается быстро, однако, когда даю команду Close - висит секунд 10-12. В чем дело? Есть такие-же проблемы и когда делаю SQL-запрос на удаление из базы некоторого кол-ва записей. Тоже выполняется запрос очень долго. Что я не так делаю?
  • ANB (15.12.08 15:38) [1]

    > Есть такие-же проблемы и когда делаю SQL-запрос на удаление
    > из базы некоторого кол-ва записей. Тоже выполняется запрос
    > очень долго

    Нету индекса.


    > Открывается быстро, однако, когда даю команду Close - висит
    > секунд 10-12.

    Про ADS - не знаю, что это такое, но скорее всего потому как СУБД - версионник.
  • kyn66 © (15.12.08 15:44) [2]

    > Нету индекса.

    Индекс есть. Я не про поиск говорю, а про удаление

        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;




    > но скорее всего потому как СУБД - версионник.


    Не понял, что это такое...
  • Sergey13 © (15.12.08 15:47) [3]
    > [2] kyn66 ©   (15.12.08 15:44)
    >       SQL.Clear;
    >       CLose;

    А зачем эти строчки? Что ты пытаешься закрыть?
  • ANB (15.12.08 15:51) [4]

    > Индекс есть. Я не про поиск говорю, а про удаление

    Прежде чем удалять, СУБД должна записи найти.

    Индекс на таблице TirSL по полю Tir есть ?

    Если сделать селект с таким условием - много записей вернет ?

    SQL.Clear;
    CLose;

    Эти строчки, действительно, бессмыслены.
  • kyn66 © (15.12.08 15:57) [5]
    Select все работает. Про удаление - это второй вопрос. Меня больше сейчас интересует почему виснет прога, точнее не виснет а работает так долго при закрытии таблицы?

    procedure TTiragSLFrm.FormDestroy(Sender: TObject);
    begin
     Screen.Cursor := crHourGlass;
     DM1.SvodTSLTbl.Close;
     DM1.TirSLTbl.Close;
     DM1.TrkTbl.Close;
     Screen.Cursor := crDefault;
    end;



    Даже прищлось часики поставить.
  • Desdechado © (15.12.08 16:06) [6]

    > почему виснет прога, точнее не виснет а работает так долго
    > при закрытии таблицы?

    Эти таблицы были открыты только на чтение? Или к ним еще применялись операции изменения? Может, просто изменения записываются на диск перед закрытием.
  • kyn66 © (15.12.08 16:32) [7]
    Изменения были. Однако я просто их открываю(открытие формы) и сразу форму закрываю, см.[5]/ Зависон сикунд 10-15. Могет на компоненте TAdsTable какие параметры убрать/поставить нужно. Ну чудо какое-то. Ладно бы при открытии(пока индексы настроятся, пока все занрузится...) А тут просто Close - и на те тормоза. Я отказываюсь понимать здравый смысл. Вразумите, плис.
  • kyn66 © (15.12.08 16:36) [8]
    Пробывал перед закрытием убирать привязку к индексам - все едино, тормоза.
 
Конференция "Базы" » Непонятная работа БД [D7, ADS]
Есть новые Нет новых   [134477   +39][b:0][p:0.001]