Mysql
 sql >> Base de données >  >> RDS >> Mysql

Adhésion MySQL avancée. Accélération de la requête

Il existe un moyen, mais plus vous ajoutez de champs, plus cela coûte cher. La même chose se produit avec de nombreux CMS qui choisissent de stocker des données utilisateur supplémentaires sous cette forme.

Vous pouvez obtenir un SQL de recherche fonctionnel en utilisant ceci :

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

Cette méthode devient très importante et coûteuse pour le serveur MySQL à mesure que vous ajoutez des tables. Par conséquent, je recommanderais de ne pas aller plus de 10 à 15 jointures comme ça et encore une fois, je le profilerais pour m'en assurer.