私は、VARCHAR(255)をテーブルのプライマリキーとして使用しており、GUIDのように見えます。 Intはパフォーマンスのために良いとは思いませんか?MySQLのプライマリキーとVARCHAR(255)
2
A
答えて
2
これはストレージエンジンによって異なりますが、一般的にはint/bigintが良いでしょう。 innodbを使用している場合、uuid/guidはクラスタ化されたインデックスの仕組みのためにプライマリキーに悪い選択です。詳細については、blogをお読みください。要約すると、キーは範囲によって格納され、uuidsはランダムなので、各行のメモリブロック全体を読み書きするためにキャッシュをスラッシュするため、挿入と参照の効率が悪くなります。
0
Intsはディスク上のスペースが少なくて済みますので、検索する際のI/Oが少なくて済みます。範囲があなたのニーズに合っている限り、私はintがより速くなると言います。
関連する問題
- 1. テーブルのプライマリキーのカラムサイズを255に変更
- 2. SQL変換varchar(255)からint(11)
- 3. MySQL:なぜVARCHAR(255)の代わりにVARCHAR(20)を使用するのですか?
- 4. MySQL varcharとIBM DB2 varchar dataypeの比較
- 5. MySql - longtextを使用してビューを作成し、VARCHAR(255)にキャストします。
- 6. MySQLのvarcharインデックスストレージ
- 7. MySQLのVARCHARサイズ?
- 8. データベース内のスウィフト文字列を合わせるVARCHAR(255)
- 9. Mysqlのcharとvarcharとintのストレージ
- 10. MySQLで255より大きい値を持つVARCHARを宣言することは賢明ですか?
- 11. mysql varbinary vs varchar
- 12. mysql varchar sort
- 13. MySQL varcharには、
- 14. MySQL UTF8 varcharカラムサイズ
- 15. VARCHAR to DATE - MySQL
- 16. MySQLでのVarcharエンコーディング
- 17. MySQLのリレーショナルテーブルとプライマリキーのデータ型
- 18. integerとvarcharのMySQLの相違
- 19. cassandraプライマリキー。整数対varcharの場合のパフォーマンス上の影響
- 20. MySQLプライマリキー列の重複インデックス?
- 21. MySQLの#1064 - varchar型のフィールド
- 22. MysqlのVarcharへの移行
- 23. Varchar(max)列はSQL Serverのプライマリキーにはできません
- 24. MySQLのBLOBまたはVARCHAR?
- 25. Mysql - プライマリキーにauto_incrementを追加
- 26. インデックスさvarchar列は、MySQL
- 27. MySQLはここでVARCHAR型
- 28. Mysql 5.7.13 innodb unique column varchar(500)
- 29. MySQLのプライマリキー自動インクリメントリセットの問題
- 30. 大きなテーブルのMySQLプライマリキーの列型
はい、PKは通常anotehrテーブルのFK(同じタイプのもの)に結合されているので、サイズは小さい方が良いです。 int(サイズ4または8)は通常、パフォーマンスのために255より優れています。 –
さらに、GUIDはInnoDBエンジンのPKとしてあまりよくありません。クラスタ化されたインデックスは値が大きくなるほどうまく機能し、ランダムなインデックスは生成されないためです。 –
これを見る[類似の質問と興味深い回答](http://stackoverflow.com/questions/332300/is-there-a-real-performance-difference-between-int-and-varchar-primary-keys) –