Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Fortgeschrittener MySQL-Beitritt. Abfrage beschleunigen

Es gibt einen Weg, aber es wird zu teuer, je mehr Felder Sie hinzufügen. Das Gleiche passiert mit vielen CMS, die zusätzliche Benutzerdaten in dieser Form speichern.

Sie können eine funktionierende Such-SQL erhalten, indem Sie Folgendes verwenden:

SELECT
    users.*,
    firstname.data AS firstname,
    lastname.data AS lastname,
    eyecolor.data AS eyecolor,

FROM
    users
    LEFT JOIN completed_form_fields AS firstname ON firstname.userid = users.id AND firstname.fieldkey = "firstname"
    LEFT JOIN completed_form_fields AS lastname ON lastname.userid = users.id AND lastname.fieldkey = "lastname"
    LEFT JOIN completed_form_fields AS eyecolor ON eyecolor.userid = users.id AND eyecolor.fieldkey = "eyecolor"

WHERE
    firstname.data LIKE '%searchdata%'
    OR lastname.data LIKE '%searchdata%'
    OR eyecolor.data LIKE '%searchdata%'

Diese Methode wird für den MySQL-Server sehr umfangreich und teuer, je mehr Tabellen Sie hinzufügen. Daher würde ich empfehlen, nicht mehr als 10-15 solcher Joins zu machen, und dann wieder, ich würde es profilieren, um sicherzugehen.