Mysql
 sql >> база данни >  >> RDS >> Mysql

Разширено присъединяване към MySQL. Ускоряване на заявката

Има начин, но става скъп, колкото повече полета добавяте. Същото се случва с много CMS, които избират да съхраняват допълнителни потребителски данни в тази форма.

Можете да получите работещ SQL за търсене, като използвате това:

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

Този метод става много голям и скъп за MySQL сървъра, колкото повече добавяте таблици. Затова бих препоръчал да не посещавате повече от 10-15 присъединявания по този начин и след това отново ще го профилирам, за да се уверя.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да активирам INNODB в mysql

  2. Възможно ли е да се вмъкнат данни в изглед на MySQL?

  3. MySQL - SELECT * INTO OUTFILE LOCAL ?

  4. Как да конвертирам този сложен SQL в заявка за модел на Django?

  5. Динамично създаване на колони от данни за редове с помощта на Select in Bigquery