Einzelnen Beitrag anzeigen

Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#1

RecordCount vs. count(*). Was ist schneller?

  Alt 7. Dez 2011, 12:13
Datenbank: Oracle • Version: 10g • Zugriff über: ADO+ODBC
Hallo,

angenommen ich muss wissen, ob ein bestimmter Eintrag in einem bestimmten Feld einer Tabelle mindestens einmal existiert. Was ist dabei der bessere/schnellere Weg? Ist jetzt zwar zur Zeit eine theoretische Frage für mich, aber ich brauch so einem Mechanismus des öfteren und mach es mal so, mal so. Will aber mal einen einheitlichen optimalen Weg da suchen.

Im folgenden ist Quelle eine TADOQuery:

Variante 1: count(*)
Delphi-Quellcode:
function exists:Boolean;
begin
  Quelle.Close;
  Quelle.SQL.Text:='Select count(*) From myTable where myFeld = ''blub''';
  Quelle.Open;
  Result:=Quelle.Field[0].AsInteger>0;
  Quelle.Close;
end
Variante 2: count(IrgendeinFeld)
Delphi-Quellcode:
function exists:Boolean;
begin
  Quelle.Close;
  Quelle.SQL.Text:='Select count(myFeld) From myTable where myFeld = ''blub''';
  Quelle.Open;
  Result:=Quelle.Field[0].AsInteger>0;
  Quelle.Close;
end
Variante 3: RecordCount
Delphi-Quellcode:
function exists:Boolean;
begin
  Quelle.Close;
  Quelle.SQL.Text:='Select * From myTable where myFeld = ''blub''';
  Quelle.Open;
  Result:=Quelle.RecordCount>0;
  Quelle.Close;
end
Was ist eurer Meinung nach die optimalste Methode?
Gibts vllt. noch weitere Möglichkeiten, das schnell zu ermitteln?
Würden Indizes da was beschleunigen können?
Ralph
  Mit Zitat antworten Zitat