我关于 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
另外两个表支持 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+ 行
- 每个人可能有 50 多项活动
- 搜索可能包括活动过滤器(例如,选择具有一项和/或多项活动的人)
- 返回的结果与人员详细信息和活动一起显示为项目符号列表
如果 Person 表仅用于搜索,我想知道是否应该将活动作为逗号分隔值添加到 Person 表,而不是加入 Activity 和 PersonActivity 表:
Person
===========================================================================
id First Last DOB Activity
2 Sara Jones 04/02/1982 hiking, snowboarding, golf, etc.
考虑到上述搜索注意事项,这会有助于还是损害搜索性能?
感谢您的输入。