Mysql
 sql >> Database >  >> RDS >> Mysql

Join MySQL avanzato. Accelerazione della query

C'è un modo, ma diventa più costoso più aggiungi campi. La stessa cosa si verifica con molti CMS che scelgono di memorizzare dati utente aggiuntivi in ​​quella forma.

Puoi ottenere un SQL di ricerca funzionante usando questo:

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%'

Questo metodo diventa molto grande e costoso per il server MySQL quanto più si aggiungono tabelle. Pertanto, consiglierei di non superare i 10-15 join in questo modo e, di nuovo, lo profilo per essere sicuro.