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: 644 | Odgovora: 3 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MatezYU
SRB

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

Sajt: www.matezyu.da.ru


Profil

icon Kako da ubrzam unos podataka u bazu?12.02.2007. u 12:54

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?
Dok sam bila devojčica mala,
nisam znala ni pišati sama.
Fala Bogu, kad sam se udala,
dignem nogu, sama voda curi!

Vuk Stefanović Karađžić
12.02.2007. u 12:54 

Vic
Beograd

Član broj: 16118
Poruke: 170
195.252.94.*



Profil

icon Re: Kako da ubrzam unos podataka u bazu?12.02.2007. u 13:49
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)
ERROR
12.02.2007. u 13:49 

priki
Srdjan Šurlan

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

ICQ: 174153511


Profil

icon Re: Kako da ubrzam unos podataka u bazu?19.02.2007. u 21:05
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
19.02.2007. u 21:05 

Miloš Baić

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

Sajt: www.2advanced.com


Profil

icon Re: Kako da ubrzam unos podataka u bazu?19.02.2007. u 21:57
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.
If you go out of your mind, do it quietly, so as not to disturb those around you...
19.02.2007. u 21:57 

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

[ Pregleda: 644 | Odgovora: 3 ]

Postavi temu Odgovori

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