我需要一些最佳实践和性能建议。
假设我有三个表:Employees、Jobs 和 Ranks。每个员工都有一份工作和一个等级,所以很明显我应该在我的员工表中引用这些表。
我的问题是,这些选项中哪个是最好的:
1) 每个职位和等级都存储有一个唯一的 ID,并与描述性名称配对。Employees 表应该引用另一个表中的唯一 ID,从而节省内存(描述性名称仅在 Jobs/Ranks 表中保存一次),但要查看描述性名称,我需要这样做JOIN
:
SELECT Employees.EMPL_ID, Ranks.R_NAME, Jobs.J_NAME
FROM Jobs
JOIN Ranks ON Ranks.R_ID=Employees.RANK
JOIN Jobs ON Jobs.J_ID=Employees.JOB
2) 只是唯一的描述性名称。这可能会浪费内存,因为我反复保存每个职级/工作的描述性名称,但我节省了我的SELECT
陈述时间
<编辑: >
澄清一下,我主要关心的是如果我需要SELECT
用多个JOIN
s 而不是一个SELECT
语句执行 s,我必须处理的性能。
我希望能够处理大量流量 - 特别是员工请求查看他们的工作和排名。
<编辑>
例子:
选项 1(ID 和名称):
Employees:
__________________________
/ EMPL_ID | RANK | JOB \
| 1 | 2 | 3 |
| 1 | 1 | 3 |
| 1 | 1 | 1 |
\__________|________|______/
Ranks:
__________________
/ R_ID | R_NAME \
| 1 | GRUNT |
| 2 | BOSS |
\________|_________/
Jobs:
____________________
/ J_ID | J_NAME \
| 1 | JANITOR |
| 3 | PRESIDENT |
\________|___________/
选项 2(唯一名称):
Employees:
_______________________________
/ EMPL_ID | RANK | JOB \
| 1 | BOSS | PRESIDENT |
| 1 | GRUNT | PRESIDENT |
| 1 | GRUNT | JANITOR |
\__________|________|___________/
Ranks:
__________
/ R_NAME \
| GRUNT |
| BOSS |
\__________/
Jobs:
___________
/ J_NAME \
| JANITOR |
| PRESIDENT |
\___________/