sql >> データベース >  >> RDS >> Mysql

主キー/外部キーとしてcharを使用していますか?

    少なくとも私にとっては、パフォーマンスは実際には主要な問題ではありません。問題は、代理キーと自然キーの違いです。

    国コードは静的ではありません。彼らは変化することができ、そして変化します。国によって名前が変更されます(例:エチオピアからエリトリア)。それらは誕生し(例えば、ユーゴスラビアやソビエト連邦の崩壊)、存在しなくなります(例えば、西ドイツと東ドイツ)。これが発生すると、ISO標準コードが変更されます。

    1990年以降の名前の変更:国、都市など の詳細

    これらのイベントが発生してもキーは変更されず、参照テーブルの列のみが変更されるため、代理キーの方が優れている傾向があります。

    そのため、代わりにint主キーを使用して国と通貨のテーブルを作成する傾向があります。

    そうは言っても、varcharキーフィールドはより多くのスペースを使用し、パフォーマンス上の不利な点があります。これは、膨大な数のクエリを実行しない限り、おそらく問題にはなりません。

    完全を期すために、を参照することをお勧めします。 AppDevelopersによるデータベース開発の間違い



    1. MySQLで2つのタイムスタンプの差を計算する方法

    2. フィルタリングされたインデックスがより強力な機能になる方法

    3. mysql SQL:特定のアイテムが最初になり、次に残りのアイテムを並べ替えます

    4. SQLエスケープを使用した動的mysqlクエリは、プリペアドステートメントと同じくらい安全ですか?