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