gpt4 book ai didi

sql - 两列作为主键还是一列作为 PK + 索引?

转载 作者:行者123 更新时间:2023-11-29 14:05:26 27 4
gpt4 key购买 nike

此表包含用户的照片(缩略图和完整照片)。
大多数查询都会有一个“WHERE user_id =?”条件。

CREATE TABLE photos (
"photo_id" serial, -- serial is postgres' autoincrement
"user_id" integer not null, -- foreign key to users table
"filename_thumbnail_50" varchar not null,
"filename_thumbnail_75" varchar not null, -- 75px x 75px thumbnail
"filename_full" varchar not null,
PRIMARY KEY ("photo_id", "user_id")
);

此用例的最佳设计和/或性能设计是什么:
- 两列主键像上面的例子?
- 一个主键 (photo_id) 和一个 user_id 索引?

最佳答案

主键应遵循您的业务规则,仅此而已。由于照片本身没有“真实的”(即自然的)主键,因此使用序列号作为 PK 绝对有意义。

user_id 扩展主键没有任何意义,也没有任何作用(因为 photo_id 无论如何都是唯一的,你只会增加索引的开销维护)。由于 user_id 是索引中的第二列,因此它不太可能用于限制 user_id 的查询(并非不可能,但不太可能)

所以我会坚持在 photo_id 上使用 PK,并在 user_id 上添加索引(无论如何,索引外键列总是一个好主意)。

关于sql - 两列作为主键还是一列作为 PK + 索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131251/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com