Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da ubrzam unos podataka u bazu?

[es] :: Pascal / Delphi / Kylix :: Kako da ubrzam unos podataka u bazu?

[ Pregleda: 2880 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU

Član broj: 4114
Poruke: 1586
*.adanet.co.yu.



+17 Profil

icon Kako da ubrzam unos podataka u bazu?12.02.2007. u 12:54 - pre 181 meseci
Dakle ovako, radim u delphi7 sa ado komponentama. Problem je sto imam jednu tabelu sa 20000 rekorda.. Kada otvorim sa append treba joj 1-2 sekunde da se otvore polja za nov unos.. Isto tako kada i postujem treba toliko puno vremena.. Da li zna neko kako mogu to da ubrzam?
 
Odgovor na temu

Vic
Error974
BI&SE
Beograd

Član broj: 16118
Poruke: 396
195.252.94.*



+49 Profil

icon Re: Kako da ubrzam unos podataka u bazu?12.02.2007. u 13:49 - pre 181 meseci
Nisi rekao da li radis sa tabelom ili sa query-jem. U svakom slucaju bolja varijanta je da koristis ili INSERT SQL ili da otvaras query koji ne ucitava sve podatke (recimo select * from tabela where id is null)
ERROR974
 
Odgovor na temu

priki

Član broj: 24732
Poruke: 699
*.dial-up.dsl.siol.net.

ICQ: 174153511


+26 Profil

icon Re: Kako da ubrzam unos podataka u bazu?19.02.2007. u 21:05 - pre 181 meseci
možeš da uradiš na sledeći način
dodaš jedan dataset sa istom strukturom polja na formu
gde radiš unos i preko njega vršiš unos
a u njemu ćeš imati upit
"select <spisak polja> from tabela where sifra=:sifra"

dakle, "dižeš" samo jedan record u data set i stvari idu mnogo brže.
Kad radiš append, ADO radi iteraciju kroz sve slogove pa to potraje

drugo
prebaci se na dbExpress
Naime, sa ADO-om je sve u redu ali izgelda da ima lošu
implementaciju u Delphiju

Delphi native je dbExpress, probaj da to sve uradiš
sa dbExpress-om i videćeš razliku

treće
niko ne radi select na tolikom broju slogova, daj mu neki parametar
tipa " select ............ where datum between :dat1 and :dat2"

pozdrav
Srdjo
 
Odgovor na temu

Miloš Baić
Miloš Baić
ERP (Dynamics NAV) programer
Beograd

Član broj: 72468
Poruke: 1155
*.kalik.info.



Profil

icon Re: Kako da ubrzam unos podataka u bazu?19.02.2007. u 21:57 - pre 181 meseci
Pozdrav,

ne znam koja je baza u pitanju, ali ako radiš sa ado mogao bi možda ovako... Pretpostavimo da imaš formu na kojoj je TDBGrid (TADOQuery1 i TDataSource1) sa tih 20000 slogova ili kako si već odradio select upit, a pored toga imaš i još jednu formu sa koje unosiš podatke ili vršiš izmene. Na tu drugu formu postavi TADOQuery2, poveži je sa TADOConnection. Dakle, na toj TForm2, unos - izmene, sa TADOQuery2 odradiš:
Code:
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('insert into tabela (atribut1, atribut2) values (:atribut1, :atribut2)')
ADOQuery2.Parameters.ParamByName('atribut1').Value:= Edit1.Text;
ADOQuery2.Parameters.ParamByName('atribut2').Value:= Edit2.Text;
ADOQuery2.Prepared:= true;
ADOQuery2.ExecSQL;

Posle toga odradiš refresh TADOQuery sa TForm1. Znači, ne vučeš slogove iz one tabele a dodaješ joj, posle toga samo refrešuješ data set i dobiješ taj uneti slog ako pripada tom select upitu.

BTW, pišem iz glave, možda ima neka greška u kodu.

Od native komponenti preporučujem ZEOSLib.
Someone's sitting in the shade today because someone planted a tree a long time ago.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Kako da ubrzam unos podataka u bazu?

[ Pregleda: 2880 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.