为什么主键订单很重要?

Ste*_*olt 7 sql-server entity-framework composite-primary-key

我最近在EntityFramework项目中设置了一个类,它将其几个成员指定为复合键.

但是,当从它创建数据库时,它给出了错误

无法确定类型"NNNNN"的复合主键排序.使用ColumnAttribute或HasKey方法指定组合主键的顺序.

我知道如何解决问题,但我只是想知道为什么它关心订单.复合主键只是一组用于键入记录的列,而不需要任何特定的排序吗?

Bil*_*egg 9

这很重要,因为主键的顺序在数据库中很重要.由于主键(通常)是聚类的,并且始终是索引,因此无论密钥是以名字,姓氏,SSN还是SSN,姓氏,名字排序,都会产生巨大的差异.如果我在查询表时只有SSN,并且PK是唯一的索引,我将看到后者的GREAT性能,以及前者的全表扫描.

  • 这比艺术更具艺术性.是的,选择查询时最有可能获得的价值是一种很好的方法.但也要考虑插入,更新,删除表的频率.由于PK(可能)是聚类的,因此您不希望经常在物理上移动这些行,并且您不希望仅仅为了插入新行而拆分页面.因此,人们通常会使用隐藏的标识(int或guid)作为唯一的PK,确保在表的末尾插入新值.然后,您可以索引其他列以进行快速选择. (4认同)