ここにテーブルSQLがあります
| 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 クエリを最適化することはできますか? ありがとう!