Thread zuviele JOINs für mySQL (6 answers)
Opened by Ronnie at 2005-05-27 19:50

Ronnie
 2005-05-27 19:50
#33307 #33307
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hier mal ein Beispiel:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT people.ID_person, firstname, lastname, title, phone1, phone2, mail1, mail2, mobile, fax, comment
FROM people
JOIN belongs_to ON people.ID_person = belongs_to.ID_person
JOIN countries AS nationality ON belongs_to.ID_country = nationality.ID_country
JOIN has_regional_experience ON people.ID_person = has_regional_experience.ID_person
JOIN countries AS experience ON has_regional_experience.ID_country = experience.ID_country
JOIN owns ON people.ID_person = owns.ID_person
JOIN expertise ON owns.ID_expertise = expertise.ID_expertise
JOIN spoke ON people.ID_person = spoke.ID_person
JOIN languages ON spoke.ID_language = languages.ID_language
JOIN worked_for ON people.ID_person = worked_for.ID_person
JOIN donors ON worked_for.ID_donor = donors.ID_donor
WHERE nationality.country='Andorra'
GROUP BY people.ID_person

Diese Abfrage dauert ca. 2 Sekunden. Sie enthält 8 unnötige JOINs weil in der WHERE-clause nur die Nationalität gefragt ist. Ich bin davon ausgegangen das MySQL solche Anfragen optimiert und nur JOINs durchführt die auch benötigt werden.

Ich muss jetzt ein Stück Code entwerfen, das aus einem Webformular einen entsprechenden SQL-String baut. Sinnvollerweise werde ich mir dann anhand der übergebenen Parameter überlegen müssen, welche JOINs ich benötige und welche nicht.

Hattet ihr so ein Problem schonmal und wie habt ihr es gelöst?

View full thread zuviele JOINs für mySQL