![]() |
| | Themen-Optionen |
| | Nach oben #1 |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
|
Abend, selbstverständlich möchte ich die beste Performance bei meinem Script, an dem ich derzeit entwickle, erreichen. Dabei geht es mir grad um die Frage, welches JOIN am schnellsten läuft (in folgendem Fall Code: SELECT
c.installdate, c.styleid,
s.stylename, s.stylepath
FROM
xpc1_settings AS c
INNER JOIN
xpc1_styles AS s
ON
s.styleid = c.styleid
1) Ich hab irgendwo mal flüchtig gelesen, man soll Index auf die Spalten setzen? Aber wie jetzt, auf alle die ich überkreuz ausles? 2) Ist LEFT, RIGHT (outer) JOIN besser geeignet und wenn ja, warum? Danke im Vorraus.. Ich frag bewuss thier nach, da sich die Leute in Foren oft drum streiten..
__________________ http://www.ChrisDiary.De |
| | |
| | Nach oben #2 |
| Benutzer Registriert seit: 31.12.2005
Beiträge: 90
|
der unterschied zwischen left / right / inner join ist der, dass die ergebnismenge anders ist. du kannst z.b. einen right join durch einen left join ersetzten, müsstest dabei aber die tabellenreihenfolge tauschen hier ists gut erklärt: http://www.little-idiot.de/mysql/mysql-118.html indizes setzt du am besten auf die spalten, die in den bedingungen vorkommen, also in deinem fall s-styleid und c.styleid. die queries testest / optimierst du am besten mit phpmyadmin und explain: einfach vor den query ein explain schreiben und in phpmyadmin ausführen, dann siehst du, welche indizes mysql nutzt. dort kannst du dann weiter optimierren |
| | |
| | Nach oben #3 |
| Christian Mühlroth Registriert seit: 04.09.2005 Ort: Nürnberg
Beiträge: 561
|
Gut und danke für den Tipp mit Explain, das kannte ich noch nicht.
__________________ http://www.ChrisDiary.De |
| | |
| | Nach oben #5 |
| leftover when bar closes Registriert seit: 29.06.2006 Ort: Bern
Beiträge: 123
|
Ich hab hier auch gleich 'ne Frage dazu. Folgendes: ich habe zwei Tables, eine angenommen "tab1" die andere "tab2". tab2 beinhaltet ein feld namens parent_id, steht also quasi für etwas untergeordnetes und ist verbunden mit einer jeweiligen id aus "tab1". "tab1" beinhaltet somit die Parents, die Hauptgruppen. Was ich mit normalen SELECT's kriege ist ein solches Array: Array ( [0] => Array ( [id] => 1 [name] => asdf ) [1] => Array ( [id] => 1 [name] => asdf ) [2] => Array ( [id] => 1 [name] => asdf ) ) Was ich nun möchte, ist folgendes Array ( [0] => Array ( [id] => 1 [name] => asdf [sub] => Array ( [id] => 1 [name] => sub1 [parent] => 1 ) ) [1] => Array ( [id] => 2 [name] => fdasf [sub] => Array ( [id] => 3 [name] => sub2 [parent] => 2 ) ) [2] => Array ( [id] => 3 [name] => dritter parent [sub] => Array ( [id] => 2 [name] => sub3 [parent] => 3 ) ) ) Ich könnte das selbstverständlich mit Unmengen an queries lösen, aber das ist weder sexy noch praktisch. Ich habe noch nie mit Joins gearbeitet und meine ersten Schritte fallen auch sehr erfolglos aus. Hier, was ich mir bisher im Web zusammensuchen konnte. PHP-Code: Ich habe testhalber 11 Datensätze in tab1, 3 Stück in tab2 (diese haben als parent die id 5, also dementsprechend sollten sie zum 5. Eintrag in tab1 geklebt werden). Die Query gibt mir jedoch 14 Einträge aus. Gibt es denn keinen Weg, die beiden Tabs zusammenzuschmelzen, wo liegt mein Fehler? Danke für die Hilfe Leuts. Gruss
__________________ Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner. ticketbörse |
| | |
| | Nach oben #6 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Exportiere mal deine Tabellen und poste oder hänge sie hier an. Auf arbeit (in ner Stunde) werd ichs mal durchgehen und schaun ob ich dir helfen kann.
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #7 | ||
| leftover when bar closes Registriert seit: 29.06.2006 Ort: Bern
Beiträge: 123
|
Hier der DROP der Tabelle "events" Zitat:
Zitat:
Ein Event kann x beliebige Kategorien haben. Hier mein momentaner, funktiontüchtiger aber alles andere als sexy Code Wird Zeit, dass ich die JOINS lerne PHP-Code:
__________________ Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner. ticketbörse | ||
| | |
| | Nach oben #8 |
| Martin Breuer Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Hast mich ja genau zum Mittagessen erwischt. Hab geduld!
__________________ I did it my way - Senseless-Blog |
| | |
| | Nach oben #9 |
| leftover when bar closes Registriert seit: 29.06.2006 Ort: Bern
Beiträge: 123
|
Keine Frage... Wie gesagt, funktioniert soweit wie gewünscht, die Verbesserung stresst nicht. Guten 'tit!
__________________ Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner. ticketbörse |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Klasse in Klasse verwenden? | goelliboy | PHP-Programmierung | 12 | 07.09.2007 11:43 |
| Join und Mysql5 | Creativ | Datenbanken | 6 | 13.10.2006 14:25 |
| left join vs from table1, table2 | ex³ | Datenbanken | 1 | 29.05.2006 21:24 |
| mit LEFT OUTER JOIN mehr als 2 Tabellen verknüpfen ? | Alpha Centauri | Datenbanken | 4 | 06.04.2006 19:00 |
| 2 Abfragen einer Tabelle zusammenfassen - JOIN? | derMaggus | Datenbanken | 15 | 24.08.2005 17:40 |