[解決済み】INTとVARCHARの主キーの間に本当のパフォーマンスの違いがあるのか?
2022-04-17 09:49:23
質問
MySQLの主キーとしてINTとVARCHARを使用した場合のパフォーマンスの差は測定可能ですか?私は VARCHAR を参照リスト(米国の州、国コードなど)の主キーとして使用したいのですが、同僚がすべてのテーブルの主キーとして INT AUTO_INCREMENT を譲らないのです。
私の主張は、詳しく言うと こちら INTとVARCHARのパフォーマンスの違いはごくわずかです。なぜなら、INTの外部キー参照はすべて、その参照を理解するためにJOINを必要とし、VARCHARキーは直接情報を提示するからです。
この特殊なユースケースとそれに関連するパフォーマンスの懸念について、どなたか経験をお持ちの方はいらっしゃいますか?
解決方法は?
を使用することで、いくつかの結合クエリを回避することができるというのは良い指摘です。 ナチュラルキー の代わりに サロゲートキー . この利点があなたのアプリケーションで重要かどうかは、あなただけが評価できます。
つまり、アプリケーションの中で、大量のデータを扱う、あるいは非常に頻繁に実行されるなど、高速であることが最も重要なクエリを測定すればよいのです。 これらのクエリでjoinを省略するメリットがあり、varchar主キーを使用しても問題がない場合は、それを実行します。
データベースのすべてのテーブルに対して、どちらの戦略をとることもありません。 自然なキーの方が良い場合もあれば、代理キーの方が良い場合もあるでしょう。
他の人たちは、ナチュラル・キーが一度も変更されず、重複もしないということは実際にはまれで、サロゲート・キーは通常、価値があるという良い指摘をしています。
関連
-
MySQLのWhereの使用方法について説明します。
-
MySQLインストールチュートリアル(Windows用)詳細
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
MySQLにおけるvarchar型とchar型の違い
-
Mysqlの使用中に発生したエラーの一部
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] C言語のi++と++iに性能差はあるのでしょうか?
-
[解決済み] VARCHARとCHARの違いは何ですか?
-
[解決済み] C++でi++と++iの間に性能差はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
mysqlでインデックスに障害が発生する原因は何ですか?
-
MySQLのWhereの使用方法について説明します。
-
MySQLインデックスベースストレステストの実装
-
MySQL XAが分散型トランザクションを実装する方法を1記事にまとめました。
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
SQLException。オペランドは1列でなければなりません。
-
SQL Server のトランザクションは、try キャッチに記述しなければ、中間ステートメントがエラーを報告してもコミットされます。
-
MySQLの起動エラー:ERROR 2003 (HY000)。localhost'上のMySQLサーバーに接続できない(10061)