见识到一个java项目,mysql数据库,所有表的主键都是varchar(64)
ringa_lee
int と比較して、varchar はより多くのディスク領域を占有し、より多くのディスク IO とより多くのメモリ帯域幅を持ちます。これは innodb で特に顕著で、innodb テーブルのセカンダリ インデックスのリーフ ページには主キーの値を格納する必要があります。主キーが varchar の場合、セカンダリ インデックスのサイズは大きくなります。さらに、varchar 主キーは、挿入中にデータの非順次挿入を送信しやすく、その結果、インデックス ツリーの効率が int
これは怠惰の兆候です!
非常に無駄でプロフェッショナルではありません。
char()型の場合、与えられる値は5です。その場合、フィールドに値があるかどうかに関係なく、null であっても 5×当前数据库编码字节 を占有します。 varchar() は、最初に 1 バイトを使用して型の最大範囲を記録します。値が渡されない場合は、最初のバイトのみが記録され、値の最大範囲内の内容が保存されます。
null
5×当前数据库编码字节
残りのフィールドの各レコードが占めるハードディスク容量については、個別に説明します。
上で述べたことはすべて正しいですおそらく彼が記録したコンテンツは UUID です多くの JSP プログラミング ライブラリはライブラリを設計するときにこのようになっていますが、理由はわかりません
int と比較して、varchar はより多くのディスク領域を占有し、より多くのディスク IO とより多くのメモリ帯域幅を持ちます。これは innodb で特に顕著で、innodb テーブルのセカンダリ インデックスのリーフ ページには主キーの値を格納する必要があります。主キーが varchar の場合、セカンダリ インデックスのサイズは大きくなります。さらに、varchar 主キーは、挿入中にデータの非順次挿入を送信しやすく、その結果、インデックス ツリーの効率が int
よりも低くなります。これは怠惰の兆候です!
非常に無駄でプロフェッショナルではありません。
char()型の場合、与えられる値は5です。その場合、フィールドに値があるかどうかに関係なく、
null
であっても5×当前数据库编码字节
を占有します。 varchar() は、最初に 1 バイトを使用して型の最大範囲を記録します。値が渡されない場合は、最初のバイトのみが記録され、値の最大範囲内の内容が保存されます。残りのフィールドの各レコードが占めるハードディスク容量については、個別に説明します。
上で述べたことはすべて正しいです
おそらく彼が記録したコンテンツは UUID です
多くの JSP プログラミング ライブラリはライブラリを設計するときにこのようになっていますが、理由はわかりません