Ist es möglich, diese Abfrage zu optimieren, die ich geschrieben habeWie optimiert man diese komplizierte EAV MYSQL Abfrage?
Ich habe eine Art dynamische virtuelle Datenbank erstellt, um meinen Benutzern die Möglichkeit zu geben, benutzerdefinierte Felder hinzuzufügen, ohne die Datenbankstruktur zu beeinträchtigen. Hier ist eine sehr vereinfachte Ansicht der Struktur bisher.
tables | columns
db_cases | caseid
db_structure | fieldname
db_data | fieldname, data, caseid
db_names | nameid
- Wir haben ein neues Feld
- Alle Daten, die wir zum Datensatz db_structure durch Hinzufügen einer Zeile erstellen möchten db_data aufgezeichnet.
- Namen werden in db_names gespeichert und die name_id in db_data
Ich versuche, die Fälle zu einer HTML-Tabelle
Hoffentlich wird der Rest selbsterklärend ist, können Sie sehen, wie unefficient es ausgegeben wird, . Kann ich dasselbe über Joins tun?
SELECT
case_id,
(SELECT data_field_value
FROM db_data
WHERE data_case_id = case_id AND data_field_name = 'casestatus'
) AS casestatus,
(SELECT forename_company
FROM db_names
WHERE name_id = (SELECT data_field_value
FROM db_data
WHERE data_case_id = case_id AND data_field_name = 'client1'
)
) AS client1_forename_company
FROM db_cases
Dank
Ich würde beginnen, indem Sie es einrücken und es verständlich machen. – Iznogood
Eine dynamische Datenbank? Sie legen also eine eigene Datenbanksemantik über eine SQL-Datenbank? Scary ... http://thedailywtf.com/Articles/The_Inner-Platform_Effect.aspx –
Beginnen Sie mit dem Löschen. – Chibuzo