次のようなデータベースがあるとします。
Product with columns [ProductName] [Price] [Misc] [Etc]
Order with columns [OrderID] [ProductName] [Quantity] [Misc] [Etc]
ProductName は Product の主キーで、何らかの文字列型で一意です。
OrderID は主キーで整数型であり、ProductName は外部キーです。
Product の主キーを整数型の新しい列に変更するとします[ProductID]
。
これにより、データベースのサイズが縮小され、これら 2 つのテーブルを結合するルックアップ (および同様の操作) が最適化されますか? それとも、これらの最適化は(ほとんど/一般/メイン) SQL データベースの実装によって自動的に実行されますか?
技術的には、(String) ProductName を の主キーとして使用するProduct
と、データベースは ProductName 列Order
を の行への単なるポインターとして実装し、整数を外部キーとして持つのと同じくらい迅速にProduct
実行できる必要があります。これは標準ですか? JOIN
SQL の実装方法。
更新: この質問は、製品テーブルにシリアル番号が必要かどうかや、データベース内の製品名の変更をどのように処理するかではなく、SQL サーバーが外部キーを処理する方法に関するものです。