[MySQL 3.23.X] Abfrage optimieren (JOINS)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 3.23.X] Abfrage optimieren (JOINS)

    Die Tabellen:
    Code:
    language
    language_id PK auto_increment
    language_name UNIQUE
    
    phrase
    phrase_id PK auto_increment
    phrase_name UNIQUE
    
    translation
    translation_ID PK auto_increment
    phrase_ID FK
    language_id FK
    translation_text TEXT
    Der Zweck:
    Ich verwende in den Templates einfach einen Eintrag aus der Tabelle phrase (z. B. {{FORM_SEND}}) und es steht, je nachdem, was der Benutzer für eine Sprache gewählt hat, entweder "Absenden" oder "Submit" oder irgendwas anderes da.

    Das Ziel:
    Mit einem SELECT phrase_name und Übersetzung in der vom Benutzer ausgewählten Sprache laden, falls ein Eintrag in dieser Sprache nicht verfügbar ist, soll automatisch die Standardsprache eingreifen. Falls der Eintrag weder für die gewählte SPrache noch für die Standardsprache gepflegt ist, wird halt nichts ausgegeben, bzw. einfach nur {{FORM_SEND}} (Beispiel)

    Das SELECT:
    Code:
    SELECT
    	p.phrase_name,
    	IFNULL(t.translation_text, st.translation_text) translation_text
    FROM
    	phrase p
    	LEFT JOIN translation st ON p.phrase_id = st.phrase_id AND st.language_id = 1
    	LEFT JOIN translation t ON p.phrase_id = t.phrase_id AND t.language_id = 2
    Die 2 ist die ID der vom Benutzer gewählten Sprache, die 1 steht für englisch.

    Das EXPLAIN:
    Code:
    +-------+--------+---------------+-------------+---------+-------------------+------+-------+
    | table | type   | possible_keys | key         | key_len | ref               | rows | Extra |
    +-------+--------+---------------+-------------+---------+-------------------+------+-------+
    | p     | ALL    | NULL          | NULL        |    NULL | NULL              |   39 |       |
    | st    | eq_ref | language_id   | language_id |       8 | const,p.phrase_id |    1 |       |
    | t     | eq_ref | language_id   | language_id |       8 | const,p.phrase_id |    1 |       |
    +-------+--------+---------------+-------------+---------+-------------------+------+-------+
    3 rows in set (0.00 sec)
    Die Frage:
    Mir gefallen die vielen NULLS nicht, kann man da was tun?
    Ich denke, also bin ich. - Einige sind trotzdem...
Lädt...
X