MySQL-Mysql数据库设计中是设计联合主键还是唯一索引好?

WP主题Bug提交 WP主题Bug提交 主题:1067 回复:2226

MySQL-Mysql数据库设计中是设计联合主键还是唯一索引好?

偏爱自由 发布于 2017-01-13 字数 195 浏览 1176 回复 5

例如:在一个表中user_id和type两个字段唯一确定一条记录,那么在设计中是将这两个字段设计为联合主键呢,还是建立一个逻辑主键id,而将这两个字段设计为唯一索引呢?这两种方式有什么区别?哪个更好呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(5

夜无邪 2017-09-02 5 楼

如何建立索引取决于将来你如何使用!如果将来的查询中不需要用到联合索引的话,直接建立主键索引即可,毕竟索引也是需要空间存储的。
索引的区别及建立可以参考这个问题 @mysql建立索引有哪些需要注意的

晚风撩人 2017-05-10 4 楼

具体还是要看你的业务需求。
另外说些在读写操作上的区别:
1.主键和符合主键在查询上没什么性能上的区别(前提是索引相同,运用得当)
2.写的性能上是有区别的,因为符合主键会使用更多的block去创建索引,所以在写操作上性能要低一些。

归属感 2017-05-01 3 楼

这个可以借鉴上面的所有说法啊,首先,是你自己的业务需求。
(1)需要字段作为一张表的主键,同是作为另一张表的外键的话,建议逻辑主键更佳啊;
(2)联合主键的话,你你必须在查询条件中where 字段1=值1 and 字段2=值2,这样的效果更准确,具体,效率不见的高,因为必须同时满足两个条件,所以查询执行多一个条件的查询消耗时间,估慢一点啊!
以上只是我自己的见解,请你自己在查证!

灵芸 2017-04-02 2 楼

肯定是的单键好,因为将来你其他表要映射的一般是这个表的主键

浮生未歇 2017-01-30 1 楼

如果你这个表中的主键要作为另外一个表的外键,那么建立一个逻辑主键更合适。
如果没有这个需求,而且你的业务中有很多联合查询使用了 user_id和type,(即:where user_id =? and type = ? 等等),那么联合主键是比较合适,同时也要注意索引的顺序匹配的问题。