私は一人のためのプロパティを持つテーブルを持って、同じ人が最大18の異なるプロパティを持つことができます。テーブルには、次のようになります。SQLクエリ、FULL JOIN、パフォーマンス
Personid, Propertytype, Propertyvalue, Propertyname
私はFULLでSQLクエリを実行したいが、結果セットの1行に1人のためのすべてのプロパティを取得するために参加します。 私はこのようなクエリを実行しましたが、応答時間/パフォーマンスについて考えると最適ではないと思います。 データベースには私は1,200万人以上の人がいますので、多くのデータローです。
マイSQLクエリ:
SELECT DISTINCT (Information.PersonID),
f.PersonName,
f1.Property AS 'P1',
f1.PropertyValue AS 'P1Value',
f1.PropertyName AS 'P1Name',
f2.Property AS 'P2',
f2.PropertyValue AS 'P2Value',
f2.PropertyName AS 'P2Name',
......
FROM Person f
FULL JOIN (
SELECT
PersonName,
Property,
PropertyValue,
PropertyName
FROM Person WHERE Property='P1'
GROUP BY PersonName, Property, PropertyValue, PropertyName
) f1 ON f.PersonName=f1.PersonName
FULL JOIN (
SELECT PersonName,
Property,
PropertyValue,
PropertyName
FROM Person WHERE Property='P2'
GROUP BY PersonName, Property, PropertyValue, PropertyName
) f2 ON f.PersonName=f2.PersonName
....
INNER JOIN Information ON f.PersonName = Information.Name
何かアドバイスはどのようにより効果的に、このクエリを実行するには?
テーブルにはどのようなインデックスがありますか?また、テーブル構造(フィールドとタイプ)を追加してください –
何を使用していますか、SQL Server、MySQL、DB2など? – Aphillippe
**両方の**テーブルのテーブル構造、PersonとInformation。 –