Конференция "Базы" » Как ускорить запись строк в Access запросом SQL [D7]
 
  • sniknik © (30.10.11 18:29) [20]
    > Это че мне еще надо 2
    не еще 2, а ТОЛЬКО эти два, + коннект (обязательно, даже если не понимаешь зачем). один конект, и кучу к нему подключений, а не так как у тебя у каждого свой. тоже если уж о скорости говорить, не добавляет.

    но главнее всего логика, алгоритм... (перечитай 17, вникни. 40мин vs 2-3мин, за счет изменения алгоритма. ни одним компонентом такого не добьешся)
  • Плохиш © (30.10.11 18:30) [21]

    > Neiron ©   (30.10.11 18:19) [16

    Чë скулишь?
    Зачем тебе это программирование? Есть много других профессий.
  • sniknik © (30.10.11 18:33) [22]
    > Я думаю он лишний, и без него все работает и подключается.
    значит ты дебил. ничего не знаешь,  спросил, и не следуешь...

    удачи.

    > Зачем тебе это программирование? Есть много других профессий.
    +1
    золотарей говорят не хватает... все в менеджеры ушли.
  • Neiron © (30.10.11 18:49) [23]

    > Вроде в msdn всё написано..

    а где его взять? Типа справка на английском чтоли в дельфи? Или чето другое имеете в виду? Я по книгам читаю и изучаю по вечерам, но там вечно в одной одного нет в другом другого в инете тоже нет справки по всем функциям хотя бы одной полной. Больше ищу ответы чем пишу код, прямо детектив какой то расследую.


    > Что-то у тебя не видно проверки на уникальность.

    Это я еще нереализовал, хотел посмотреть скока база сама то будет создаватся

    Хочу попробовать сделать приспосаблиеваемость клетки к окружающей среде посредством естественного отбора, используя ошибку в ДНК клетки как двигатель эволюции. Просто интерсный эксперимент такой :). В программе есть клетка она ест еду и есть окружающая среда как сама клетка так и окружающая среда могут влиять друг на друга (клетка есть получает энергию которую может потратить на разные действия найти еду, двигатся, поделится сделав копию себя. При трате энергии она изменяет температуру окружающей среды, если температура не в пределах жизни клетки тогда повышается процент ошибки копирования ДНК при делении клетки и будут в ДНК изменятся параметры она мутирует типа приспасабливается или деградирует и вымрет). Есть и другие источники мутации как вирусы клетка наткнется если на него то тоже мутирует. У клетки еще будет типа в ДНК записан алгоритм жизнедеятельности типа живет по определенной программе, если бак энергии полный то делится потом сканирует местность на еду, потом движется и ест потом снова теже операции, на этот алгоритм жизни ее тоже будет влиять мутация.
    Вот почему я делаю базу с координатами еды чтобы сохранить их и загрузить и продолжить наблюдение за миром этим. И интересно и базы данных изучаю еще, не в текстовом же файле хранить все эти координаты. Таблицами как то удобнее все.

    Спасибо sniknik, оч полезный урок я много узнал интересного. Подскажите книжку плиз еще по SQL я незнаю какую выбрать???
  • Anatoly Podgoretsky © (30.10.11 18:50) [24]

    > Neiron ©   (30.10.11 18:19) [16]

    А ты что хочешь отделаться одним, или ленишься.
  • Neiron © (30.10.11 19:07) [25]

    > А ты что хочешь отделаться одним, или ленишься.


    я разберусь со всеми компонентами я стараюсь учится, извините за тупые вопросы.


    > > Я думаю он лишний, и без него все работает и подключается.
    > значит ты дебил. ничего не знаешь,  спросил, и не следуешь.
    > ..удачи.> Зачем тебе это программирование? Есть много других
    > профессий.+1золотарей говорят не хватает... все в менеджеры
    > ушли.


    Мне нравится вот и занимаюсь, зачем грубить то!!! Спокойнее надо к людям относится. Вы тоже в свое время ничего не знали так что не надо показывать что если вы щас это знаете а я нет пока что то я хуже вас. Всему свое время. :)
  • sniknik © (30.10.11 19:30) [26]
    > Вы тоже в свое время ничего не знали
    и что? тебе ;е не из-за того "грубят", что не знаешь, а из-за того, что после объяснений (о чем ты кстати просил) ты их игнорируешь, "думаешь" видите ли.
    пока "нулевый" не думай, вникай в то, что дают.
  • Neiron © (30.10.11 19:36) [27]
    все понял. Уже читаю и разбираю твой код и компоненты тоже. Всем спасибо за терпение.
  • Германн © (31.10.11 00:56) [28]

    > На одной из веток форму тут я задавал вопрос как с ADOTable
    > в Access сделать еще одно поле, итогом беседы было что SQL
    > типа проще использовать и он универсальный

    Ну я это говорил. Ко мне претензии есть?
  • Slym © (31.10.11 07:26) [29]
    110 секунд
         Query{TADOCommand}.CommandText:='INSERT INTO Координаты_еды ([Тип_еды], [Х], [У]) VALUES (:Tip, :X,:Y);';
         Query.Prepared:=true;
         for i:= 0 to 70000 do
         begin
           Query.Parameters[0].Value:=Random(2);
           Query.Parameters[1].Value:= Random(640);
           Query.Parameters[2].Value:= Random(480);
           Query.Execute;
           if (i mod 100) =0 then
           begin
             Caption:=(inttostr(i));
             Application.ProcessMessages;
           end;
         end;

  • Омлет © (31.10.11 07:46) [30]
    > Slym ©   (31.10.11 07:26) [29]
    >     for i:= 0 to 70000 do


    У автора на порядок больше )
  • Anatoly Podgoretsky © (31.10.11 08:44) [31]
    Ну и что, подумаешь будет 1100 секунд, кроме того можно
    if (i mod 1000) =0 then

  • sniknik © (31.10.11 09:26) [32]
    > У автора на порядок больше )
    и по времени, того порядка = этому результату (3 часа). а нормальный компонент/написание тоже самое "в лоб" делает за 40 мин.
    вот что кре... ADOCommand животворящий делает! ;)
  • Slym © (31.10.11 09:34) [33]
    10 сек
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i: integer;
     DB:TADOConnection;
     Query:TADOCommand;
     cvs:TFileStream;
     s:string;
     tick:DWORD;
    begin
     tick:=GetTickCount;
     DB:=TADOConnection.Create(nil);
     try
       DB.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
                                     ExtractFilePath(Application.ExeName) +'\База данных Эволюции.mdb';
       DB.Connected:=true;
       Query:=TADOCommand.Create(nil);
       try
         Query.Connection:=DB;
         Query.CommandText:='DELETE FROM ДНК_клеток';
         Query.Execute;

         Query.CommandText:='INSERT INTO ДНК_клеток ([№_клетки],[Цвет],[Размер],[Масса],[Жизнь],' +
                          '[Ошибка_копир_ДНК],[Скорость_деления],[Бак_с_Е],[Е_для_деления],' +
                          '[Е_для_сенсора],[Е_для_движения],[№_клеток_в_орган],[№_жгутиков],' +
                          '[Дальн_сенсора],[Скор_движения],[Коор_клетки_Х],[Коор_клетки_У],' +
                          '[Коор_пищи_Х],[Коор_пищи_У],[Действий_клетки]) ' +
                          'VALUES(1, 100, 6, 6, 60, 0, 2, 25, 20, 10, 1, 1, 1, 40, 1, 0, 0, 0, 0, 0);';
         Query.Execute;

         Query.CommandText:='DELETE FROM Координаты_еды;';
         Query.Execute;

         cvs:=TFileStream.Create('Data.txt',fmCreate);
         try
           for i:= 0 to 700000 do
           begin
             s:=Format('%d,%d,%d'#13#10,[Random(2),Random(640),Random(480)]);
             cvs.WriteBuffer(PChar(s)^,Length(s));
           end;
         finally
           cvs.Free;
         end;

         Query.CommandText:='DELETE FROM Координаты_еды;';
         Query.Execute;
         Query.ParamCheck:=false;
         Query.CommandText:=
         'INSERT INTO Координаты_еды SELECT txt.F1 as Тип_еды, txt.F2 as Х, txt.F3 as У FROM [Text;Database='+ExtractFilePath(Application.ExeName)+';HDR=No;FMT=Delimited].Data.txt AS txt;';
         Query.Execute;

       finally
         Query.Free
       end;
     finally
       DB.Free;
     end;
     tick:=GetTickCount-tick;
     Caption:=IntToStr(tick);
    end;

  • Anatoly Podgoretsky © (31.10.11 09:36) [34]
    > sniknik  (31.10.2011 09:26:32)  [32]

    А вывод какой, переписать все нафиг?
  • Омлет © (31.10.11 09:58) [35]
    > Slym ©   (31.10.11 09:34) [33]

    Это довод в пользу ADOCommand? ))
  • sniknik © (31.10.11 10:25) [36]
    > А вывод какой, переписать все нафиг?
    пофиг.

    > Это довод в пользу ADOCommand? ))
    в пользу особенностей движка (про фай с самого начала говорили будет быстрее всего), но вот на другом движке "ISAM-ов" может и не быть, но зато будут "линкед сервер"/OPENQUERY/т.д. какие нибудь.
  • sniknik © (31.10.11 10:28) [37]
    > Это довод в пользу ADOCommand? ))
    тут же вместо 700000 вызовов делается 1 т.что собственно "тормоза" ADOQuery по сравнению с ADOCommand совершенно не важны.
  • Sergert © (16.02.12 15:54) [38]
    Обычно работаю с BDE.
    Проверил сейчас по скорости он обходит существенно приведенные тут примеры.
    ADO нравится тем, что не требует доп.драйверов и настроек. Все в одном компонение - ADOConnection.
    Но если нужна именно скорость, что Вы обычно используете? Я смотрю, BDE сейчас никто не использует.
    Не хочется быть мамонтом.
  • Anatoly Podgoretsky © (16.02.12 16:09) [39]
    > Neiron  (30.10.2011 11:11:00)  [0]

    Замени на TAdoCommand и используй параметры
 
Конференция "Базы" » Как ускорить запись строк в Access запросом SQL [D7]
Есть новые Нет новых   [134431   +9][b:0.001][p:0.003]