Hilfe bei unperformanter Datenbankabfrage

medi0815

Neuer Benutzer
Beiträge
3
Hallo,

Erst einmal: Ich habe nicht wirklich viel Ahnung von SQL. Leider hat sich mitlerweile heraus gestellt, dass entweder mein query grottig zu sein scheint oder mein Datenbankmodell. Denn diese Abfrage hier dauert ca. 35-40 Sekunden bei vielleicht 50k Einträgen, was ja irgendwie nicht sein kann.

Hier das query:
Code:
SELECT
myDB.idDocBasic as idDocBasic, myDB.number as number,
myDB.title as title, myDB.accessRights as accessRights,
myP.number as projectNumber, myDT.description as docType,
myDC.description as docClass, myR.idRevision as idRevision,
myR.source as source, myU.name as insertedBy, myR.dateCreation as creationDate,
myR.creator as creator, myR.isExternalDoc as isExternalDoc,
myR.externalDocNo as externalDocNumber, myR.idRefIntern as internalDocNumber,
myR.idBill as idBill, myR.attachmentKeywords as attKeywords, myR.receiver as receiver
FROM  myDocumentBasics as myDB
INNER JOIN myProjects as myP ON myDB.idProject = myP.idProject
INNER JOIN myDocumentTypes as myDT ON myDB.idDocType = myDT.idDocumentType
INNER JOIN myDocumentClasses as myDC ON myDB.idDocClass = myDC.idDocumentClass
INNER JOIN myRevisions as myR ON myDB.idDocBasic = myR.idDocBasic
INNER JOIN myUser as myU ON myR.idInsertedBy = myU.idUser
WHERE myR.isLatestRevision = 1 AND myDB.accessRights <= 1
ORDER BY myDB.idDocBasic DESC, myR.idRevision DESC

Wie steht es mit der Abfrage. Ist die prinzipiell in Ordnung und ich müsste vielleicht nach den Indices schauen oder ist die Abfrage ansich schon falsch aufgebaut?
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Eigentlich ist der INNER JOIN ja recht anspruchslos aber es sind natürlich viele davon. Bezieht sich die 50k Einträge auf das Ergebnis des Selects oder auf alle Zeilen in allen Tabellen? Ich die Nebentabellen sollten alle einen Index auf die ID haben.
 

medi0815

Neuer Benutzer
Beiträge
3
Frag doch mal EXPLAIN ;-)
Blöde frage aber: Wasn das? ^^
Ich hab jetzt mal so ne Analyse gestartet, werde aber aus den Ergebnissen nicht so recht schlau. Der Meckert mir irgend welche Indices an, die fehlen würden obwohl jede meiner Tabelle nen Index auf die ID Spalte verpasst bekommen hat.
 

medi0815

Neuer Benutzer
Beiträge
3
Eigentlich ist der INNER JOIN ja recht anspruchslos aber es sind natürlich viele davon. Bezieht sich die 50k Einträge auf das Ergebnis des Selects oder auf alle Zeilen in allen Tabellen? Ich die Nebentabellen sollten alle einen Index auf die ID haben.
Ok ich hab übertrieben. Hab grad mal nachgeschaut. Sind in insgesamt vielleicht 20k Einträge, davon in der größten Tabelle rund 10k. Als Ergebnisstabelle erhalten ich ca. 6700 Einträge.
Index haben wie gesagt alle IdSpalten der Tabellen. Kann man da was falsch einstellen?
 

akretschmer

Datenbank-Guru
Beiträge
9.042
Werbung:
Oben