SEARCH クエリのパフォーマンスに関する私の質問です。
純粋に検索用に存在する読み取り専用の Person テーブル (MySQL) にデータをフラット化しました。このテーブルには、約 20 列のデータがあります (ほとんどの場合、制限されたテキスト値、日付、ブール値、および無制限のテキストを含む列がいくつかあります)。
Person
=============================================================
id First Last DOB etc (20+ columns)...
1 John Doe 05/02/1969
2 Sara Jones 04/02/1982
3 Dave Moore 10/11/1984
別の 2 つのテーブルは、Person と Activity の間の関係をサポートします。
Activity
===================================
id activity
1 hiking
2 skiing
3 snowboarding
4 bird watching
5 etc...
PersonActivity
===================================
id PersonId ActivityId
1 2 1
2 2 3
3 2 10
4 2 16
5 2 34
6 2 37
7 2 38
8 etc…
検索に関する考慮事項:
- Person テーブルには 200 ~ 300k 以上の行が含まれる可能性があります
- 1 人あたり 50 以上のアクティビティがある可能性があります
- 検索にはアクティビティ フィルターが含まれる場合があります (例: 1 つまたは複数のアクティビティを持つ人物を選択)
- 返された結果は、個人の詳細と活動とともに箇条書きリストとして表示されます
Person テーブルが検索のみに使用される場合、Activity テーブルと PersonActivity テーブルに結合するのではなく、アクティビティをコンマ区切りの値として Person テーブルに追加する必要があるかどうか疑問に思っています。
Person
===========================================================================
id First Last DOB Activity
2 Sara Jones 04/02/1982 hiking, snowboarding, golf, etc.
上記の検索に関する考慮事項を考慮した場合、これは検索のパフォーマンスに役立ちますか、それとも低下しますか?
入力していただきありがとうございます。