I have a problem with the request speed - it works for about 16 seconds, and I need to speed it up!
My table layout is as follows:
Users
- id (int 10, primary key)
- username (varchar 100)
- password (varchar 100)
Users_meta:
- id (int 10, primary key)
- user (int 10)
- meta (varchar 100)
- value (longtext)
I need to return data from different rows to the user's meta-table (e.g. first name, last name, etc.) in the form of columns. This request does the job, but runs too slowly:
SELECT
Users.id as id,
Users.username as username,
firstName.value as metaFirstName,
lastName.value as metaLastName,
userLevel.value as metaUsername,
employer.value as metaEmployer,
gto.value as metaGTO
FROM Users
LEFT JOIN (Users_meta as firstName) ON (firstName.user = Users.id AND firstName.meta = 'first_name')
LEFT JOIN (Users_meta as lastName) ON (lastName.user = Users.id AND lastName.meta = 'last_name')
LEFT JOIN (Users_meta as userLevel) ON (userLevel.user = Users.id AND userLevel.meta = 'user_level')
LEFT JOIN (Users_meta as employer) ON (employer.user = Users.id AND employer.meta = 'employer')
LEFT JOIN (Users_meta as gto) ON (gto.user = Users.id AND gto.meta = 'gto')
I also need to be able to add WHERE and ORDER BY clauses to the query.
Thank you for your help.:)
source
share