У меня есть таблицы SQL здесьMySQL Оптимизация LEFT JOIN для большого запроса данных с той же таблицы
| id | dataid | datarow | datacolumn | datavalue
_________________________________________________
| 1 | 1 | 1 | FirstName | John
| 1 | 1 | 1 | LastName | Lobo
| 1 | 1 | 1 | Age | 35
| 1 | 1 | 2 | FirstName | Mich
| 1 | 1 | 2 | LastName | Handness
| 1 | 1 | 2 | Age | 22
| 1 | 1 | 3 | FirstName | Mike
| 1 | 1 | 3 | LastName | Longbow
| 1 | 1 | 3 | Age | 55
Какой будет что-то вроде этого
FirstName LastName Age
John Lobo 35
Mich Handness 22
Mike Longbow 55
SELECT DISTINCT
t1.datavalue AS Firstname,
t2.datavalue AS Lastname,
t3.datavalue AS Age
FROM largedatatable t1
LEFT JOIN (SELECT datavalue,datarow FROM largedatatable WHERE datacolumn='LastName') t2 ON t1.datarow = t2.datarow
LEFT JOIN (SELECT datavalue,datarow FROM largedatatable WHERE datacolumn='Age') t3 ON t1.datarow = t3.datarow
WHERE t1.dataid = 1
Что дает мне результат, как
Firstname LastName Age
John Lobo 35
Mich Handness 22
Mike Longbow 55
Теперь скрипт работает отлично; Но запрос медленный, если его большой набор данных. Я все равно могу оптимизировать этот SQL-запрос. Благодаря!
использовать группу по с оператором if он выполнил бы запрос только один раз. –
Прежде всего, ваша структура таблицы сама по себе выглядит так, будто она может замедлить вас. Помимо этого у вас есть индексы во всех полезных местах (например, в столбце, на который вы присоединяетесь?) – ModulusJoe