Sql Anfrage nach einer Zeile beenden

jhjh

Bekanntes Mitglied
Hallo,

es gibst ja in SQL zB Fetch First Only n Rows bzw limit n um sich nur eine bestimmte Anzahl von Zeilen anzeigen zu lassen. Das Problem ist hier, dass die Verarbeitung nach n Zeilen trotzdem weiterläuft und am ende quasi nur aus einem Stapel die ersten n Zeilen ausgegeben werden. Ich möchte aber, dass die Ausführen nach n Zeilen beendet wird. Wie mache ich das am besten ? Ich verwende DB2.
 

jhjh

Bekanntes Mitglied
Ist dem nicht so ? o_O
Also ich habe mehrere Tabellen mit sehr vielen Daten in einer Abfrage mit Joins verknüpft werden. Wenn ich auch nur eine Zeile ausgeben möchte dauert es halt ewig (wie lange genau weiß ich gerade nicht, aber ist schon seit 7 min am laufen), deswegen war meine Vermutung, dass nach einer Zeile es trotzdem weiterläuft....
 

mihe7

Top Contributor
Das hört sich für mich eher nach fehlenden Indizes an.

Was die Verarbeitung der Zeilen betrifft: das kommt auf die Abfrage an. Ein ORDER BY muss nun mal erst sortieren, bevor die 1. Zeile zurückgegeben werden kann. Man kann das Ergebnis vorher ggf. einschränken.
 
K

kneitzel

Gast
Neben fehlenden Indizes kann es natürlich auch an der Abfrage liegen. Typische Gründe können halt schlechte Filterausdrücke sein (z.B. jedes Feld muss aktiv angepackt werden ohne dass ein vorhandener Index verwendet werden kann) oder Verknüpfungen wo aus n und m Zeilen dann intern n*m Zeilen aufgebaut werden müssen...
Und natürlich können ggf auch existierende Locks durch andere Abfragen Ursache sein - also Probleme an anderer Stelle können dies natürlich auch verursachen.

Eine Abfrage über 7 Minuten ist aber generell etwas dubios und da sollte analysiert werden:
- DB2 hat ein EXPLAIN Befehl um sich den Execution Plan anzeigen zu lassen.
- Generell bietet DB2 die Möglichkeit, fehlende Indizes zu finden: https://www.ibm.com/support/knowled...riginal/oslc/web/rs_t_find_missing_index.html
Aber Achtung: Indizes erhöhen die Abfrage-Geschwindigkeit aber sie verlangsamen z.B. Inserts und Updates! Also immer die ganze Performance im Blick haben!
- Natürlich ganz wichtig: CREATE EVENT MONITOR Befehl von DB2: https://www.ibm.com/support/knowled...com.ibm.db2.luw.sql.ref.doc/doc/r0055061.html
 

LimDul

Top Contributor
Bei einer ordentlichen Datenbank (und sowenig ich DB2 mag - es ist eine ordentliche Datenbank) kann man davon ausgehen, dass die nicht mehr tut als notwendig. Das heißt, wenn du nur die erste Zeile haben willst, ermittelt die Datenbank nicht mehr als notwendig um diese erste Zeile zu ermitteln. Sprich, ihr sagen, dass sie danach aufhören soll, brauchst du nicht - macht sie sowieso. (der Cursor wird zwar noch offen sein, bis das Query wirklich geschlossen wird, aber das sind Details).

Das Problem ist nur, wie oben schon erwähnt:
* Order by - dann müssen ggf. alle Zeilen gelesen werden, um die erste zu ermitteln
* Fehlende Indexe - um zu ermitteln, was die korrekten Zeilen bei einem Join sind muss dann ein Full Table Scan gemacht werden, also die gesamte Tabelle einmal gelesen werden
* Ungünstige Where Bedingungen - um zu ermitteln, was die korrekten Zeilen sind muss dann ein Full Table Scan gemacht werden, also die gesamte Tabelle einmal gelesen werden

Wenn man nun mehrere Joins hat potenziert sich das ganze.

Ein Query was 7+ Minuten läuft und nicht gerade eine hochkomplexe Data Warehouse Query ist, dauert zu lang. Dann ist entweder das Query falsch oder es stimmt was am Datenbankschema (Indexe & Co) nicht oder die Maschine ist im Verhältnis zur Datenmenge massive zu klein (Also mehrere Millionen Datensätze und 5212 MB RAM oder so).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Optimierung von Querys/ ausgegebene Tabelle mit in neue Anfrage einbinden Datenbankprogrammierung 2
m²labs Muss ich wirklich bei jeder Anfrage öffnen/schließen? Datenbankprogrammierung 3
N Bei Anfrage "MySQLNonTransientConnectionException" Datenbankprogrammierung 5
T Spalten einer SQL-Anfrage vorhersagen Datenbankprogrammierung 6
W Problem mit Anfrage an DB2 Datenbankprogrammierung 2
M Sql Anfrage wirft Exception Datenbankprogrammierung 5
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
Z MySQL "Too many connections" auch nach schliessen der Connections. Datenbankprogrammierung 10
ruutaiokwu SQL-Dump nach MariaDB laden? Datenbankprogrammierung 6
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
Thallius MySQL jdbc schließt Verbindung nach vielen Request von selber Datenbankprogrammierung 8
S MySQL JTable zeigt nach Datenbankabfrage eine Spalte zu viel an Datenbankprogrammierung 0
D MySQL Suche nach Max Value in einer Tabelle Datenbankprogrammierung 7
M SQLite Suche nach String Datenbankprogrammierung 4
G PostgreSQL Nach Monaten auf einmal ClassNotFound-Exception Datenbankprogrammierung 3
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
J SQLite Datenverlust nach beenden des Programmes Datenbankprogrammierung 21
J Fehlende DatenbankView nach einbeziehen von JDBC Datenbankprogrammierung 3
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
D Zeit von SQL nach Java Datenbankprogrammierung 2
M DB-Zugriff funktioniert nach JAR-Erstellung nicht mehr Datenbankprogrammierung 3
AssELAss Oracle Suche nach Umlauten Ä und Ae ermöglichen Datenbankprogrammierung 11
G HSQLDB Inserts/Updates sind nach Neustart der Anwendung Datenbankprogrammierung 1
S MySQL Nach wiederholtem Update falsche Werte (im Speicher?) Datenbankprogrammierung 1
Z PDF nach Formate sortieren Datenbankprogrammierung 3
A Nach Export mysql Verbindung zur Datenbank nicht möglich, was tun? Datenbankprogrammierung 7
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C Programm wird nach DB-Eintrag nicht weitergeführt Datenbankprogrammierung 5
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
P MySQL Verbindung nach außen sehr langsam Datenbankprogrammierung 4
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
P JPA- Entities bleiben nach dem Löschen (unsichtbar?) in der Datenbank Datenbankprogrammierung 6
GianaSisters MS SQL unter Netbeans OK - nach konvertieren Absturz Datenbankprogrammierung 6
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
I Zugriff auf Datenbank nach Erstellen einer Executable Jar Datei verweigert Datenbankprogrammierung 10
M Datenbankeintrag bleibt nach Löschen in JSP vorhanden Datenbankprogrammierung 8
0 Filtern nach mehreren Kriterien Datenbankprogrammierung 4
T filtern nach expliziten Worten trotz LIKE '%Wort%' Datenbankprogrammierung 2
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
F SQL ordnen nach zueinander in Verhältnis gesetzten Spaltenwerten Datenbankprogrammierung 11
J SQL: Sortierung nach Wortlänge Datenbankprogrammierung 2
Java.getSkill() Datensatz / Tupel automatisch nach xy Tagen / Stunden löschen Datenbankprogrammierung 7
T JPA: NullPointerException nach persist Datenbankprogrammierung 3
T Eintragung in einer Spalte nach Abfrage Datenbankprogrammierung 11
E Hibernate Session closed nach Transaction commit? Datenbankprogrammierung 7
K Rundungsfehler bei Gleitkommazahlen von Java nach SQL Datenbankprogrammierung 2
B Spaltennamen von MySQL Datenbank nach Java auslesen Datenbankprogrammierung 10
alexpetri Problem mit jdbc MS Access / nach 670 inserts ist schluss. Datenbankprogrammierung 4
tfa Apache DBCP: Reconnect nach Timeout? Datenbankprogrammierung 3
M mySQL zugriff funktionert nach ca4 stündiger laufzeit nicht Datenbankprogrammierung 6
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M sql-code für suche in tabelle nach höchster transaktionsnr Datenbankprogrammierung 12
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
T Tabellen aus Datenbank 1 nach Datenbank 2 Datenbankprogrammierung 2
C Resultset nach connection close weiterreichen Datenbankprogrammierung 5
E JDBC, ForwardOnly bei ResultSet nach Uebergabe Datenbankprogrammierung 4
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
D JAVA hängt nach SQL Abfrage Datenbankprogrammierung 7
I Nach export zur .jar keine verbindung mehr Datenbankprogrammierung 7
M Datenbankverbindung bricht nach ca. 12 Stunden Verbindung ab Datenbankprogrammierung 3
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
G File nach Blob konvertieren ? Datenbankprogrammierung 6
M Abfrage trennt Ergbnis eines Atrributes nach den Leerzeichen Datenbankprogrammierung 4
F Treiber nachladen oder nach Bedarf Datenbankprogrammierung 4
P Primärschlüssel direkt nach der Eingabe wieder auslesen Datenbankprogrammierung 7
R MySQL Syntax für suche nach Textteil Datenbankprogrammierung 8
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
D Zweckmäßigkeit einer Schlüsseltabelle Datenbankprogrammierung 4
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Variable in main soll mit der generierten Zahl aus einer Methode ausgefüllt werden Datenbankprogrammierung 3
N Oracle SQL - Nächst kleineren Namen2 zu einem Namen aus einer Tabelle Datenbankprogrammierung 3
T Datenbank auf einer Webseite aus einer Exceltabelle erstellen Datenbankprogrammierung 5
D JPA gleiche methode funktioniert an einer Stelle, an der anderen nicht Datenbankprogrammierung 3
nonickatall MySQL Auf neue Datensätze in einer Datenbank reagieren Datenbankprogrammierung 5
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
P Verbindung zu einer Access Datenbank per Eclipse oder Intellij Datenbankprogrammierung 0
pkm Frage zu Encodingproblem bei einer Datenbankanbindung Datenbankprogrammierung 1
B Frage bei einer SQL Query Datenbankprogrammierung 3
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
J Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ? Datenbankprogrammierung 4
S Anmelden an einer msql datennbank Datenbankprogrammierung 1
F Auslesen einer .dbf-Datei, Zuordnung Index Datenbankprogrammierung 0
ralfb1105 Oracle Zwei ojdbc Driver in einer Applikation? Datenbankprogrammierung 13
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
Dimax MySQL 10 höchsten Werte aus einer Tabelle ermitteln Datenbankprogrammierung 30
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
F UPDATE - Befehl nur in einer Zeile Datenbankprogrammierung 11
I Oracle Wie ermitteln, welche Benutzer-(!)Tabellen in einer DB sind? Datenbankprogrammierung 1
DaCrazyJavaExpert Derby/JavaDB Wert einer Variable in der Datenbank direkt auf 1 setzten. Datenbankprogrammierung 71
W Daten aus einer Datei von einem VServer auslesen Datenbankprogrammierung 1
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben