Leistungsvergleich der Ergebnismenge beim Extrahieren von Daten mit dem Index und dem Spaltennamen [duplizieren]

9

Gäbe es einen Unterschied in der Leistung, wenn ich den Index verwende, um Daten vs Spaltenname zu erhalten, und ich spreche davon, diese Operation millionenmal am Tag auf dem Server auszuführen.

rs.getString(1) gegen rs.getString("columnname");

BEARBEITEN: JDBC-Version Oracle JDBC-Treiber 10.2.0.4.0

    
Srujan Kumar Gulla 31.12.2012, 16:51
quelle

2 Antworten

11

Das rs.getString(n); wird etwas schneller ausgeführt, da es direkt von einer Sammlung abgerufen wird und nicht nach einer Suche.

Hunderte zukünftiger Leser Ihres Codes werden das rs.getString("columnname"); eher zu schätzen wissen, als das SQL nachsehen zu müssen, worauf sich der Index n bezieht.

    
Gilbert Le Blanc 31.12.2012, 16:56
quelle
4

Es ist nicht wirklich wichtig. Der Treffer in der Datenbank ist um ein Vielfaches langsamer als der Zugriff auf die Spaltenwerte.

rs.getString(n) wird vernachlässigbar schneller sein. Es hängt jedoch von der Treiberimplementierung und der Anzahl der Spalten im Ergebnis ab. Die meisten Implementierungen verwenden wahrscheinlich eine HashMap , um Spaltennamen einem Index zuzuordnen , aber nicht unbedingt. Außerdem können einige Treiber die HashMap träge erstellen, was bedeutet, dass die erste Zeile nach dem Spaltennamen am langsamsten ist. JTDS, als Beispiel, sucht linear nach Spalten, die noch nicht in seiner HashMap sind.

EDIT: kleinere Bearbeitungen und neu angeordnet. Keine inhaltlichen Änderungen.

    
mikeslattery 31.12.2012 16:59
quelle

Tags und Links