実行するクエリの種類を確認して、採用する形式を決定することをお勧めします。
個々のオクテットを引き出したり比較したりする必要がある場合にのみ、それらを別々のフィールドに分割することを検討する必要があります。
それ以外の場合は、4バイト整数として格納します。これには、MySQL組み込みの INET_ATON()
および INET_NTOA()コード>
機能。
パフォーマンスとスペース
ストレージ:
IPv4アドレスのみをサポートする場合は、MySQLのデータ型を UNSIGNED INT
にすることができます。 4バイトのストレージのみを使用します。
個々のオクテットを保存するには、 UNSIGNED TINYINT
を使用するだけで済みます。 SMALLINTS
ではなくデータ型 、各ストレージを1バイト使用します。
どちらの方法でも、同様のストレージを使用しますが、オーバーヘッドのために別々のフィールドに少し多く使用します。
詳細:
パフォーマンス:
単一のフィールドを使用すると、パフォーマンスが大幅に向上します。4ではなく単一の比較です。IPアドレス全体に対してのみクエリを実行するため、オクテットを分離しておく必要はありません。 INET _ *
を使用する MySQLの関数は、比較のためにテキスト表現と整数表現の間の変換を1回行います。