🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi.bazy-danych
Article #70247

Query i pamięć - długie

#70247
From: romekp
Date: Fri, 29 Jun 2007 17:32
101 lines
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-mail

Show 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