sql >> Base de Datos >  >> RDS >> Mysql

Unión avanzada de MySQL. Acelerar consulta

Hay una manera, pero se vuelve más costosa cuanto más agrega campos. Lo mismo ocurre con muchos CMS que optan por almacenar datos de usuario adicionales en ese formulario.

Puede obtener un SQL de búsqueda funcional usando esto:

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

Este método se vuelve muy grande y costoso para el servidor MySQL a medida que agrega más tablas. Por lo tanto, recomendaría no hacer más de 10 a 15 uniones como esa y, de nuevo, lo perfilaría para asegurarme.