私は現在、クラスでデータ型char
とint
MySQL について議論しています。8つの個別番号の電話番号を持っています。ただし、それぞれの長所と短所を見つけることはできません。
char
タイプまたはタイプを使用する必要がint
ありますか?その理由は?
固定サイズの場合はchar(8)
-> 8B を使用できます。mysql は固定サイズのフィールドではるかに高速に動作しますが、int
-> 4B を選択するとスペースが節約され、そのフィールドにインデックスがある場合は高速に動作しますチャー。
char(8) と int を使用して書き込みと読み取りの速度をテストする簡単なベンチマークを実行できます。
サイズが固定の場合、varchar や varbinaryのような可変長型を使用してもパフォーマンスが低下するため意味がありません。
電話番号をどのように表現したいかによって異なりますが、市外局番、国番号などが必要ですか、それを単一の列として保存しますか、それとも分割しますか?
個人的には、市外局番、国番号、および電話番号を datatype の 3 つの列として表すことを選択しますint
。これにより、1 つの地域内のすべての電話番号を簡単に検索できるようになります。ただし、文字列値のようなものにすることが唯一の目的である場合は、char で十分varchar
ですが、複数の国の電話番号がある場合は、代わりにを使用することを検討します。
米国については正確にはわかりませんが、ヨーロッパでは、国内アクセス コードは 0 で始まり、国際アクセス コードは 00 または + で始まります。先頭の 0 が失われるため、これは INT を使用することの短所です。さらに、名前を含む電話番号もあり、これらの名前は番号に変換できますが、名前として保持することをお勧めします。これは、INT を使用することの 2 つ目の欠点です。最後の短所は、内線番号なども使用できることです。すべて VARCHAR が優先されます。
VARCHAR
さまざまな国の形式でより多くの範囲を提供するため、電話番号の保存に使用し始めました。保管料が安い。