Geschwindigkeit bei if Abfrage

Hallo,

ich habe eine Frage bzgl. Geschwindigkeit bei if-Abfragen. Ich hoffe, dass es hier schon jemand ausprobiert hat. Ansonsten müsste ich erst eine DB aufsetzen ....

Ich habe eine Tabelle mit zwei Spalten x, y (beides int Werte).
x und y sollen miteinander verglichen werden und die größere von beiden in einer Variablen gespeichert werden.

Funktioniert dies schneller, wenn die if-Abfrage in der SQL-Anweisung steht, oder geht es schneller, wenn beide Werte aus der DB gelesen werden und der Vergleich "innerhalb des Java-Programms" erfolgt?
 

Landei

Top Contributor
Ich vermute, dass es mit SQL schneller geht, aber nicht weil Javas if langsamer ist, sondern weil in diesem Fall weniger Daten (wenn es nur die beiden Spalten sind, die Hälfte) übertragen werden müssen.
 
J

JohannisderKaeufer

Gast
Wie soll das in SQL gehen?

mir fällt da nur folgendes ein

Code:
select x as z from table where x >= y
union
select y as z from table where y > x

Dabei durchläufst du allerdings 2 mal die ganze Tabelle.
Hast bei jedem Eintrag also 2 Überprüfungen (x>=y und y>x).

Bei einer Abfrage
Code:
select x,y from table
Durchläufst du nur einmal die Tabelle
Und im Java-Code überprüfst du nur einmal ob x>y ist.

Das die übertragene Datenmenge ansteigt, mag sein.
Das sie sich verdoppelt, glaube ich eher nicht, da ich denke, daß bei einer DB-Abfrage eh noch einiger Overhead mitwandert.

Was genau rauskommt, könnte man aber durch ausprobieren herausfinden.
 
Wie soll das in SQL gehen?

Hier sind zwei Beispiele bzgl. if-Anweisung innerhalb eines SQL-Statements.
sql server - SQL: IF clause within WHERE clause - Stack Overflow
Use IF in select clause : IFFlow ControlSQL / MySQL

Im Netz habe ich noch folgendes gefunden:
"SQL-Datenbanken effizient nutzen"
SQL-Datenbanken effizient nutzen | Dr. Web Magazin
Interessant ist der letzte Abschnitt: "Wann ist der Einsatz sinnvoll?"

Es sieht wohl so aus, als müsste man dies jedesmal ausprobieren, wenn die Performance entscheidend ist.
 
S

SlaterB

Gast
wenn die Performance entscheidend ist, man aber so wenig über die Systeme weiß dass man da was ausprobieren/ messen muss,
dann sehe ich ja schwarz, dann ist das wohl nur eine Spass-Optimierung
 
wenn die Performance entscheidend ist, man aber so wenig über die Systeme weiß dass man da was ausprobieren/ messen muss,
dann sehe ich ja schwarz, dann ist das wohl nur eine Spass-Optimierung

Ich arbeite hier nicht an einem konkreten Problem, sondern lese gerade ein Buch über Datenbanken. Beim Kapitel über die if-Abfragen stellte sich bei mir die Frage ein, was wann besser ist.
Ich würde gerne wissen, nach welchen Kriterien man eine solche Entscheidungen trifft, bzw. welche Parameter man kennen muss, damit man nicht ausprobieren/messen muss.
Hast du vielleicht einen guten Link oder eine Literaturempfehlung zu dem Thema?
 
Zuletzt bearbeitet:
J

JohannisderKaeufer

Gast
Das mit dem IF, daran kann ich mich so langsam wieder erinnern, das war aber auch schon ein paar Jahre her, seit ich das das letzte mal so verwendet habe.

Aber ich Frage mich erneut, wie soll das mit max aussehen?
Max ist doch eine Aggregatsfunktion, die den höchsten Wert in einer Spalte liefert.
BrotaufstrichIstLecker ;) sucht aber nach einer Möglichkeit das Max aus zwei Werten einer Zeile zu bekommen.
 

tuttle64

Bekanntes Mitglied
Funktioniert dies schneller, wenn die if-Abfrage in der SQL-Anweisung steht, oder geht es schneller, wenn beide Werte aus der DB gelesen werden und der Vergleich "innerhalb des Java-Programms" erfolgt?


Alllgemein funktioniert es schneller, wenn alles im SQL-Statement steht, da die Bedingungen bereits auf dem Server geprüft werden und nur noch die Datenmenge zum Client transferiert werden muss, die den Bedingungen entsprechen. Wir innerhalb des Java Programms entschieden muss zuerst die ganze Datenmenge auf den Client übertragen werden und erst dann kann entschieden werden, welche Row(s) zutreffen. Ich kann es testweise auf meiner mySQL Installation testen. Ich kann aber jetzt schon sagen, dass bei einer Row der Unterschied nicht gross sein wird.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
buggy84 MySQL BLOB Geschwindigkeit Datenbankprogrammierung 16
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
L PostgreSQL Abfrage mit EclipseLink Datenbankprogrammierung 7
S Berechnung des Datumsunterschieds in der SQL-Abfrage Datenbankprogrammierung 1
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
nonickatall MySQL SQL Abfrage erneut ausführen oder rs aktualisieren Datenbankprogrammierung 14
Kirby.exe Verständnisproblem bei SQL Abfrage Datenbankprogrammierung 27
N SQL-Abfrage in JTextField ausgeben Datenbankprogrammierung 6
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
W MySQL DB Abfrage in Array, gemischte Array, generelles vorgehen Datenbankprogrammierung 4
D SQL Abfrage optimieren Datenbankprogrammierung 35
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
D Regelmäßige Abfrage aus Workbench Datenbankprogrammierung 6
M SQL-Statement Hilfe bei SQL-Abfrage Datenbankprogrammierung 2
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
M MySQL Anbindung und Abfrage an die Datenbank Datenbankprogrammierung 2
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
E Abfrage auf HSQLDB Datenbankprogrammierung 4
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
S SQL Abfrage Datenbankprogrammierung 2
F Abfrage der letzten Einträge Datenbankprogrammierung 2
J SELECT Abfrage/Suche Datenbankprogrammierung 4
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
OnDemand SQL Abfrage und Equals Datenbankprogrammierung 4
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
M MySQL MySQLSyntaxError in Java, obwohl Abfrage in HeidiSQL korrekt Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
L SQL-Abfrage bricht vor dem Ende ab Datenbankprogrammierung 2
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Derby/JavaDB Komplexe Abfrage vereinfachen Datenbankprogrammierung 2
S SQL-Abfrage, Filewriter .txt Datei Datenbankprogrammierung 2
P Datenbank- Abfrage mit null'en Datenbankprogrammierung 2
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
D MySQL Erstellen der richtigen Abfrage Datenbankprogrammierung 3
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
D JDBC insert mit select abfrage Datenbankprogrammierung 5
E PostgreSQL Exception too ...many clients already bei DB-Abfrage Datenbankprogrammierung 14
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
H JSON Array abfrage beschleunigen Datenbankprogrammierung 2
S MySQL Abfrage: Wenn Feld leer, alles anzeigen Datenbankprogrammierung 5
Mrtwomoon Abfrage-Ergebnisse in einem Fenster darstellen Datenbankprogrammierung 8
0 SQL Abfrage Bestellung Datenbankprogrammierung 15
G SQLite SQLite Abfrage Datenbankprogrammierung 4
C Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException Datenbankprogrammierung 4
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
B My-SQL Abfrage - Out Of Memory Error Datenbankprogrammierung 13
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
K SQLite Einfache DB-Abfrage Datenbankprogrammierung 2
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
C Sortierung bei SQL-Abfrage Datenbankprogrammierung 3
B Bei Abfrage schießt der Speicher in die Höhe Datenbankprogrammierung 6
M SQL Abfrage Dupliakte bei Kreuzvergleich Datenbankprogrammierung 2
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
G SQL Abfrage Datenbankprogrammierung 5
C SQL-Abfrage Datenbankprogrammierung 4
B SQL-Abfrage Datenbankprogrammierung 4
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
C Wert in SQL-Abfrage zählen lassen Datenbankprogrammierung 8
R Memory leaks bei DB Abfrage Datenbankprogrammierung 16
S Abfrage auf SQLite-DB Datenbankprogrammierung 2
I Belastet es das System zu sehr einen Timer jede 0.2 Sekunden eine DB Abfrage machen zu lassen? Datenbankprogrammierung 9
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
G Abfrage von Teilnehmern Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
A MySQL Ergebnss aus SQL Abfrage in Hauptklasse verwenden Datenbankprogrammierung 3
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G Performante SQL- Abfrage (LIKE %) Datenbankprogrammierung 21
G Join Abfrage Datenbankprogrammierung 12
M db abfrage fehlerhaft Datenbankprogrammierung 5
C MySQL Abfrage mit flexibler WHERE bedingung Datenbankprogrammierung 10
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
S MySQL Frage zu LeftJoin Abfrage Datenbankprogrammierung 2
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
H MySQL Datenbank Abfrage Datenbankprogrammierung 10
André Uhres SQL Abfrage erkennt keine Buchstaben mit Akzenten (z. B. é, è) Datenbankprogrammierung 3
E MySQL Klasse zur Abfrage statisch oder Standard Datenbankprogrammierung 5
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben