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

Avanceret MySQL-tilmelding. Fremskynder forespørgslen

Der er en måde, men det bliver dyrt, jo flere du tilføjer felter. Det samme sker med mange CMS'er, der vælger at gemme yderligere brugerdata i den form.

Du kan få en fungerende søge-SQL ved at bruge denne:

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

Denne metode bliver meget stor og dyr for MySQL-serveren, jo flere du tilføjer tabeller. Derfor vil jeg anbefale ikke at gå mere end 10-15 joins på den måde, og så igen, vil jeg profilere det for at være sikker.



  1. PSQLEundtagelse:ResultSet er ikke placeret korrekt, måske skal du ringe næste gang

  2. selectArgs i SQLiteQueryBuilder virker ikke med heltalsværdier i kolonner

  3. Kumulativ sum over et sæt rækker i mysql

  4. T-SQL CTE-materialiseringsteknikker virker ikke på SQL Server 2012