目前,我正在更新数据库设计,现在我需要一些指导。

当前结构:

名为“ 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
人名,
技能编号

09-25 23:25