sql >> Databasteknik >  >> RDS >> Mysql

Avancerad MySQL-anslutning. Påskyndar frågan

Det finns ett sätt men det blir för dyrt ju fler du lägger till fält. Samma sak händer med många CMS som väljer att lagra ytterligare användardata i den formen.

Du kan få en fungerande SQL-sökning med detta:

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

Denna metod blir väldigt stor och dyr för MySQL-servern ju fler du lägger till tabeller. Därför skulle jag rekommendera att inte gå mer än 10-15 anslutningar på det sättet och sedan igen, skulle jag profilera det för att vara säker.



  1. Hur kan jag se live MySQL-frågor?

  2. Minnestryckanalys Risktillstånd

  3. Förhindra dubbletter av SQL-poster

  4. Hämta poster som inte är noll efter decimalkomma i PostgreSQL