質問: intとvarchar主キーの間に実際のパフォーマンスの違いはありますか? mysqlで主キーとしてintとvarcharを使用する場合、測定可能なパフォーマンスの違いはありますか?参照リストの主キーとしてvarcharを使用したいので(米国の州、国コードを考えてください)、同僚はすべてのテーブルの主キーとしてint auto_incrementを使用しません。詳細な here のように、私の引数は、intとvarcharのパフォーマンスの違いはごくわずかであるということです。情報。だから、この特定のユースケースとそれに関連するパフォーマンスの懸念を経験した人はいますか?
回答: 私は同じジレンマに直面しました。道路事故、事故の車両、事故の死傷者の3つのファクトテーブルでdw(コンステレーションスキーマ)を作成しました。データには、1979年から2012年までに英国で記録されたすべての事故と60のディメンション表が含まれます。合わせて、約2,000万件のレコード。ファクトテーブルの関係:+----------+ +---------+ | accident |>--------<| vehicle | +-----v----+ 1 * +----v----+ 1| |1 | +----------+ | +---<| casualty |>---+ * +----------+ * rdms:mysql 5.6本来、事故インデックスは15桁のvarchar(数字と文字)です。アクシデントインデックスが変更されない場合、代理キーを使用しないようにしました。 i7(8コア)コンピューターでは、ディメンションに応じて1,200万レコードの負荷が発生した後、dwのクエリが遅くなりすぎました。何度もやり直し、bigintサロゲートキーを追加した後、平均20%の速度のパフォーマンスが向上しました。まだパフォーマンスゲインは低いですが、有効な試行です。 mysqlのチューニングとクラスタリングで働いています。