|
1
72
使用一个简单的两列多对多映射,我认为拥有一个代理键没有真正的优势。打开主键
您将不需要对单个列进行索引,因为该表只应用于将两个引用的表连接在一起。 在我看来,你在这个问题中提到的评论不值得它使用电子。听起来好像作者认为表存储在一个数组中,而不是一个非常高性能的平衡多路径树结构。 首先,不需要存储或访问 桌子 排序,只是索引。指数不会是 存储 按顺序,它将以有效的方式存储,以便能够快速检索。 此外,绝大多数数据库表都是读取的 远的 比写的更频繁。这使得您在选择端所做的任何事情都比在插入端所做的任何事情更相关。 |
|
|
2
16
链接表不需要代理键。 您只需要在(col1,col2)上使用一个pk,在(col2,col1)上使用另一个唯一索引。 除非您使用的ORM无法应付并为您指定DB设计… 编辑:我在这里回答了同样的问题: SQL: Do you need an auto-incremental primary key for Many-Many tables? |
|
|
3
11
如果引用了表,则可能需要增量主键。在多对多表中可能有一些细节需要使用增量主键从另一个表中提取出来。 例如
使用partdevice.id作为fk很容易提取“其他详细信息”。因此需要使用增量主键。 |
|
|
4
5
我能回答您问题的最短和最直接的方法是说,如果您所链接的两个表没有连续的主键,则会对性能产生影响。正如您所说/所引用的,链接表的索引要么变得支离破碎,要么如果链接表没有自己的顺序主键,DBMS将更加努力地插入记录。这就是大多数人将按顺序递增的主键放在链接表上的原因。 |
|
|
5
2
所以,如果唯一的任务是链接这两个表,那么最好的pk应该是双列pk。 但是,如果它有其他用途,那么添加另一个ndx作为带有外键和第二个唯一索引的pk。 索引或pk是确保没有重复项的最佳方法。pk允许像Microsoft Management Studio这样的工具为您完成一些工作(创建视图)。 |
|
|
Johnny T · 基于当前值的SQL合并表[重复] 1 年前 |
|
John D · 需要为NULL或NOT NULL的WHERE子句 1 年前 |
|
ojek · 如何对SQL结果进行分组和编号? 1 年前 |
|
|
senek · 如何在PL/SQL中将选择结果(列)放入数组中 1 年前 |
|
|
Sax · 规范化Google表格(第一步) 1 年前 |
|
|
Jatin · 检索卷计数的动态sql抛出错误语法错误[关闭] 1 年前 |
|
|
Andrus · 如何在sql中查找第二个匹配项 1 年前 |