1. ホーム
  2. mysql

[解決済み】INTとVARCHARの主キーの間に本当のパフォーマンスの違いがあるのか?

2022-04-17 09:49:23

質問

MySQLの主キーとしてINTとVARCHARを使用した場合のパフォーマンスの差は測定可能ですか?私は VARCHAR を参照リスト(米国の州、国コードなど)の主キーとして使用したいのですが、同僚がすべてのテーブルの主キーとして INT AUTO_INCREMENT を譲らないのです。

私の主張は、詳しく言うと こちら INTとVARCHARのパフォーマンスの違いはごくわずかです。なぜなら、INTの外部キー参照はすべて、その参照を理解するためにJOINを必要とし、VARCHARキーは直接情報を提示するからです。

この特殊なユースケースとそれに関連するパフォーマンスの懸念について、どなたか経験をお持ちの方はいらっしゃいますか?

解決方法は?

を使用することで、いくつかの結合クエリを回避することができるというのは良い指摘です。 ナチュラルキー の代わりに サロゲートキー . この利点があなたのアプリケーションで重要かどうかは、あなただけが評価できます。

つまり、アプリケーションの中で、大量のデータを扱う、あるいは非常に頻繁に実行されるなど、高速であることが最も重要なクエリを測定すればよいのです。 これらのクエリでjoinを省略するメリットがあり、varchar主キーを使用しても問題がない場合は、それを実行します。

データベースのすべてのテーブルに対して、どちらの戦略をとることもありません。 自然なキーの方が良い場合もあれば、代理キーの方が良い場合もあるでしょう。

他の人たちは、ナチュラル・キーが一度も変更されず、重複もしないということは実際にはまれで、サロゲート・キーは通常、価値があるという良い指摘をしています。