Article View: pl.comp.lang.delphi.bazy-danych
Article #70247Query i pamięć - długie
From: romekp
Date: Fri, 29 Jun 2007 17:32
Date: Fri, 29 Jun 2007 17:32
101 lines
4392 bytes
4392 bytes
Witam serdecznie Grupę Użytkowników Wspaniałego Delphi.
Chciałbym poradzić się Praktyków, jeśli chodzi o używanie Query.
Zainteresował mnie przykład z Delphi 7- BkQuery-(katDB). Można w nim wykonać
wielokrotnie różne zapytania do bazy(Używam Firebird i Paradox, aby zobaczyć
różnice w szybkości wykonania zapytania.). Jednak po paru wykonanych
zapytaniach wywala mi błąd - po polsku wydaje mi się brak pamięci -
insufficient memory. Oglądam te żródełka i widzę, że nie ma tam żadnej
linijki kody zwalniającej pamięć. W związku z tym mam pytanie, jak używać
Query, aby po wielokrotnym użyciu na tej samej bazie nie spowodować, aby ten
komunikat pokazywał się. Zapytania są "ostre", teraz już na 22000 rekordów i
wykonują się po ok. minucie i wkurza mnie to. W związku z tym co pokazać
użytkownikowi w międzyczasie aby wiedział, że baza jest poddawana tzw.
obróbce ?.
Drugie pytanie to : co mogę zrobić, aby przyśpieszyć wykonanie zapytania i
póżniej wrócenie do pierwotnego wyświetlenia bazy.
Oto przykład.- poniżej kawałek zapytania,
Uruchamiam program.Baza -Active=false;
Uruchamiam program;
pyta się o hasło;
jest ok;
wchodzę;
Na razie bez problemów;
Pokazuje się forma główna programu;
Wybieram formę,która mnie interesuje, ale tu wykonuję active na bazie. I
czekam na pokazanie formy ok 2 minut. To bardzo frustrujące i nie wiadomo
dla użytkownika co się w tym czasie robi.
Proszę o poradę jak to zrobić aby uniknąć tych spraw.
Próbuję na Firebird i Paradox, ale wyniki są podobne, ponieważ moim zdaniem
w każdym przypadku robię coś źle.
W pewnym czasie wykorzystałem narzędzie "Database Tour"-Demo i tam
wychodziło to błyskawicznie, ale nie ma źródełka i nie wiem co Oni zrobili,
że tak szybko działa.
Ewentualnie, czy można "władować" bazę do pamięci, i korzystać z tego jako
błyskawicznego dostępu do bazy ?
To przykład mojego zapytania.
Wykorzystuję checkbox do wykonania zapytania i powrotu do stanu
poprzedniego.
Oczywiście na formie jest datasource i query.
w Query jest zapytanie:
SELECT * FROM Baza WHERE Stary_Indeks IN
( SELECT Stary_Indeks FROM Baza.DB GROUP BY Stary_Indeks
HAVING count(Stary_Indeks)>1) AND
Indeks_mat LIKE '10%'
ORDER BY Nazwa
A pod checkbox podstawiłem:
Datamodule7.table1.Close;
Query2.Close;
if CheckBox4.Checked then
begin
Query2.Open;
cxGrid1DBTableView1.DataController.DataSource := Datasource2;
dbGrid1.DataSource := Datasource2;
DBStatusLabel1.DataSource := Datasource2;
wwDBNavigator1.DataSource := Datasource2;
end
else
begin
Query2.Close;
Datamodule7.table1.Open;
DBStatusLabel1.DataSource := Datamodule7.Datasource1;
wwDBNavigator1.DataSource := Datamodule7.Datasource1;
cxGrid1DBTableView1.DataController.DataSource :=
Datamodule7.Datasource1;
dbGrid1.DataSource := Datamodule7.Datasource1;
Query2.SQL.Free;
end;
Forma pokazuje się szybko, bo na razie nie podłączam się do bazy, al w
momencie wciśnięcia klawisza uruchamiającego następną Forme, użyłem:
form1.visible := false;
Datamodule7.table1.Active := true;
I tu czekam i czekam i czekam.
W końcu otworzy się, ale to bardzo wkurzające- te czekanie. Może jakiś
paseczek postępu ?
Proszę o pomoc.
Technical Details
Message-ID:
<f63fqu$4qt$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!newsfeed.gazeta.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!newsfeed.gazeta.pl!news.gazeta.pl!not-for-mail From: "romekp" <romekp2@wp.pl> Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Query i pamięć - długie Date: Fri, 29 Jun 2007 19:32:39 +0200 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 103 Message-ID: <f63fqu$4qt$1@inews.gazeta.pl> NNTP-Posting-Host: 212.122.206.116 X-Trace: inews.gazeta.pl 1183138462 4957 212.122.206.116 (29 Jun 2007 17:34:22 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Fri, 29 Jun 2007 17:34:22 +0000 (UTC) X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-Priority: 3 X-RFC2646: Format=Flowed; Original X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-User: polo57 X-MSMail-Priority: Normal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit