Przeszukiwanie Tabel

0

Witam wszystkich

Mam przykładowo 10 tabel i chciałby w nich wyszukać jeden rekord. Zapis typu :

for i := 1 to 10 do
begin
   Table.Active := False;
   Table.TableName := 'Table' + IntToStr(i);
   Table.Active := True;
   if Table.Locate('nazwa', szukany_string, []) then cośtam
end;

działa prawidłowo, ale czas wyszukiwania jest zbyt długi. Czy jest jakiś szybszy sposób? Wszelkie sugestie mile widziane :)

0

watki

0

Jesli to wyszukiwanie bedzi sie powtarzac to moze warto wprowadzic index. Moze tesz tyb bazydanych nie jest odpowiedni. Jeszcze jedno podejrzewam ze najwiecej czasu zajmuje otwieranie tabel ja bym uzyl zapytan SQL. Jesli napiszesz cos wiecej o tym "costam" to moze ci pomoge wiecej.

Jesli zdecydujesz sie na wadki pamietaj ze w BDE wymagane sa unikalne sesje dla kazdego.

0

Jesli to wyszukiwanie bedzi sie powtarzac to moze warto wprowadzic index.

Niestety wyszukiwanie tego samego elementu powtarza się rzadko :(

Jesli napiszesz cos wiecej o tym "costam" to moze ci pomoge wiecej.

To "cośtam", to nic innego jak wyświetlenie wyniku wyszukiwania.

A jeśli chodzi o SQL, to jakiego zapytania najlepiej użyć ?

0

Nie mam przy sobie Delphi wiec nie wiem czy przez jakis glupi blad nie dziala. Ale <ort>zrub </ort><ort>miejwiecej </ort>tak. Napisz czy dziala szybciej. Napisz <ort>terz </ort>jakiej bazy danych ort!.

var
I,R:Integer
begin
Memo1.Clear;

for i := 1 to 10 do
begin

Query.SQL.Clear;
Query.SQL.Text:=
'SELECT kolumna1 FROM Table' + IntToStr(i) +
' WHERE kolumna1 = '+szukany_string; // nie zapomnij spacji przed WHERE
Query.Open;

For R:=0 to Query.RecCound - 1 do 
Memo1.Lines.Add(Query.FieldByName('kolumna1').AsString);

end;
end;

0

Nie mam przy sobie Delphi wiec nie wiem czy przez jakis glupi blad nie dziala. Ale zrub miejwiecej tak. Napisz czy dziala szybciej. Napisz terz jakiej bazy danych urzywasz.

OK. Dzięki. Czas wyszukiwania skrócił się prawie o połowę :) [soczek]

1 użytkowników online, w tym zalogowanych: 0, gości: 1