Zum Inhalt springen

langsame Datenbankabfrage


Wapmaster

Empfohlene Beiträge

Hallo zusammen,

ich habe hier eine Datenbankabfrage, welche auch funktioniert, jedoch seeeeehr sehr langsam ist.

$max wird gegeben, ist klar,

$recode ebenfalls gegeben, enthält eine Kategorien-Abkürzung, die übereinstimmen soll

-> die $max letzten Kommentare aller Produkte der Kategorie-Abkürzung $recode sollen gelistet werden

SELECT b.*, h.PRODUKTID, h.SI, c.SI, c.ZI

FROM kommentare b, produkte h, kategorien c

WHERE

b.PRODUKTID= h.PRODUKTID

AND h.SI = c.SI

AND c.ZI = '$recode'

ORDER BY b.LOGDATE DESC

LIMIT $max

noch eine Info: die Abfrage braucht derzeit mind. 20 Sekunden, maximal 60 Sekunden. Tabelle kommentare hat 1000 einträge, derzeit, produkte sind 40.000 und kategorien 13.500. Letztere beiden bleiben konstant.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn die Datenbank einen Index auf eine oder mehrere Tabellen setzt, dann muss sie bei einem select nicht mehr alle Datensätze durchsuchen, sondern sie kann anhand des Indizes schon einen Haufen Datensätze ausschliessen.

Wie es technisch funktioniert ist von Datenbank zu Datenbank verschieden. Ein oft gewählter Ansatz ist eine Binärbaumstruktur. Dabei wird z.B. bei einer Dezimalzahlspalte die Gesamtanzahl der Datensätze in zwei Teile geteilt. Der eine Teil kleiner einer bestimmten Zahl, der andere Teil grösser (die gewählte Zahl liegt also genau in der Mitte). Danach wird der erste Teil nach dem selben Verfahren geteilt und so weiter. Wenn jetzt eine Abfrage kommt, die die Zahl einschränkt, dann hangelt sich die DB am Baum entlang.

Beispiel:

Datensätze: 1, 1, 4, 3, 4, 7, 5, 5, 9, 8, 6, 2

wird in den folgenden Binärbaum geteilt:

1, 1, 2, 3, 4, 4

5, 5, 6, 7, 8, 9

1, 1, 2,

3, 4, 4,

5, 5, 6,

7, 8, 9,

usw.

Bei einer Suche nach der Zahl 6 muss jetzt nicht mehr jeder Datensatz verglichen werden sondern nur noch folgender Ablauf:

Ist die Zahl kleiner als 5? Nein, also zweiter Ast -> ist die Zahl kleiner als 7? Nein, also 3. Ast -> Und da müsste in unserem Beispiel dann dreimal verglichen werden, bei einem weiter gesplitteten Baum evtl. weniger.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Grundsätzlich währe mal wieder interessant welche Datenbank...

Die Ausführungen von Kingogbrain könnten darauf schließen, das es durch einen INdex immer schneller wird. Dies muss nicht umbedingt sein. Es gibt viele Situationen wo es bedeutend schneller geht (je nach dbms) auf bestimmte spalten gerade keinen index zu haben...

Dies nur als kleine Anmerkung...

Link zu diesem Kommentar
Auf anderen Seiten teilen

das liegt aber dann daran, dass die Indexerstellung und -verwaltung auch Zeit und Speicher kostet. Eine Indizierung sollte auf die eigrenzenden Attribute gesetzt werden und nur auf diese.

das ist zwar richtig, aber nicht der hauptgrund. entscheidend ist der quotient resultset/gesamtmenge, d.h. übersteigt die menge an zurückgelieferten zeilen einen bestimmten wert, wird die verwendung eines index teurer als ein FTS. der schwellwert hängt von daten/datenverteilung ab, liegt aber so um die 10-20%.

deshalb sind datenbanksysteme mit festen optimizern bei grossen datenmengen oftmals im nachteil.

-j

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...