ベスト プラクティスとパフォーマンスに関するアドバイスが必要です。
Employees、Jobs、Ranks の 3 つのテーブルがあるとします。すべての従業員には仕事とランクがあるため、当然、従業員テーブルでこれらのテーブルを参照する必要があります。
私の質問は、これらのオプションのどれが最適かということです:
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
ステートメントの時間を節約できます
<編集: >
明確にするために、私の主な関心事は、1 つのステートメントではなくSELECT
複数の を使用して を実行する必要がある場合に対処しなければならないパフォーマンスです。JOIN
SELECT
多くのトラフィックを処理できるようにしたいと考えています。具体的には、従業員がジョブとランクを確認するように要求しています。
<編集>
例:
オプション 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 |
\___________/