拥有单列主键或使用复合主键是否更好?我有以下示例:
create table emp(
subsidiary_id smallint ,
Employee_id int ,
emp_name varchar,
constraint emp_pkey primary key ( subsidiary_id , Employee_id )
数据将是行
subsidiary_id , employee_id
1, 1
1, 2
1, 3
2, 4
3, 5
2, 6
任何子公司的员工ID都不能相同,但在我的报告中使用where子句中的列as subsdiary_id = 1和employee_id = 1等等
所以想知道如何更好地在employee_id列上创建primary,或者两者哪个更好?
答案 0 :(得分:1)
听起来像复合主键是适合您的解决方案:
CREATE TABLE emp (
subsidiary_id smallint NOT NULL,
employee_id int NOT NULL,
emp_name text,
CONSTRAINT emp_pkey PRIMARY KEY (subsidiary_id, employee_id)
);
为此约束创建的索引对于仅subsidiary_id
条件中出现WHERE
的查询也很有用。