假设我有一个看起来像这样的数据库;
Product with columns [ProductName] [Price] [Misc] [Etc]
Order with columns [OrderID] [ProductName] [Quantity] [Misc] [Etc]
ProductName 是 Product 的主键,是某种字符串类型,并且是唯一的。
OrderID 是主键并且是某种整数类型,而 ProductName 是外键。
假设我将 Product 的主键更改为整数类型的新列,即[ProductID]
.
这会减少数据库大小并优化连接这两个表的查找(以及类似的操作),还是这些优化是由(大多数/通用/主要) SQL 数据库实现自动执行的?
从技术上讲,使用 (String) ProductName 作为 inProduct
的主键,数据库应该能够将 ProductName 列Order
简单地实现为指向行的指针,并像使用整数作为外键一样快速地Product
执行 a ,这是标准吗? JOIN
SQL的实现方式。
更新: 这个问题是关于 SQL 服务器如何处理外键,而不是产品表是否需要序列号,或者我如何处理数据库中的产品名称更改。