目前,我正在更新数据库设计,现在我需要一些指导。
当前结构:
名为“ person_skill”的表具有以下列:
id
person_id
Skill Name
而且我们要查询表:
向我展示所有具有一种或多种技能的人,因为一个人可以具有一种或多种技能。
查询:
select a.person_id, a.skillname, b.skillname, c.skillname
from person_skill a, person_skill b, person_skill c
where a.skillname='Java'
and b.skillname='SQL'
and c.skillname='Javascript'
and a.person_id = b.person_id
and a.person_id = c.person_id;
当前,表中大约有5万条记录(并且预计表将在生产中增加数百万行),并且许多技能名称都是重复的。 8k左右的独特技能名称。
在查询返回结果之上,但恐怕一旦我们有数百万行会大大降低性能甚至更糟,它将崩溃。
有什么建议吗?
最佳答案
您必须对表进行规范化,建议阅读here。
人表
ID,
FName,
LName,
SSN,
...
技能表
ID,
技能
PersonXSkill_Table
人名,
技能编号