MySQL中應該怎樣儲存IP地址

來源:互聯網
上載者:User

標籤:

為什麼要問如何儲存IP

首先就來闡明一下部分人得反問:為什麼要問IP得知怎樣存,直接varchar類型不久得了嗎?

其實做任何程式設計都要在功能實現的基礎上最大限度的最佳化效能。而資料庫設計是程式設計中不可忽略的一個重要部分,所以巧存IP地址可以一定程度獲得很大提升。

利用函數演算法處理

在MySQL中沒有直接提供IP類型欄位,但如果有兩個函數可以把IP與最大長度為10位元字類型互轉,所以使用int類型儲存IP比varchar類型儲存IP地址效能要提升很多,減少不少看空間。因為varchar是可變長形,需要多餘的一個位元組儲存長度。另外int型在邏輯運算上要比varchar速度快。

IP轉數字函數inet_aton()

我們轉換下幾個常用的IP地址

1234567891011121314151617181920212223 mysql> select inet_aton(‘255.255.255.255‘);+------------------------------+| inet_aton(‘255.255.255.255‘) |+------------------------------+|                   4294967295 |+------------------------------+1 row in set (0.00 sec) mysql> select inet_aton(‘192.168.1.1‘);    +--------------------------+| inet_aton(‘192.168.1.1‘) |+--------------------------+|               3232235777 |+--------------------------+1 row in set (0.00 sec) mysql> select inet_aton(‘10.10.10.10‘);+--------------------------+| inet_aton(‘10.10.10.10‘) |+--------------------------+|                168430090 |+--------------------------+1 row in set (0.00 sec)

所以IP的表欄位可以設定為INT(10)就好,如果IP擷取不到可以直接存0代表擷取不到IP的意思

數字轉IP函數inet_ntoa()
12345678910111213141516171819202122232425262728293031 mysql> select inet_ntoa(4294967295);+-----------------------+| inet_ntoa(4294967295) |+-----------------------+| 255.255.255.255       |+-----------------------+1 row in set (0.00 sec) mysql> select inet_ntoa(3232235777); +-----------------------+| inet_ntoa(3232235777) |+-----------------------+| 192.168.1.1           |+-----------------------+1 row in set (0.00 sec) mysql> select inet_ntoa(168430090); +----------------------+| inet_ntoa(168430090) |+----------------------+| 10.10.10.10          |+----------------------+1 row in set (0.00 sec) mysql> select inet_ntoa(0);        +--------------+| inet_ntoa(0) |+--------------+| 0.0.0.0      |+--------------+1 row in set (0.00 sec)

注意,0轉換為 0.0.0.0

 

from:http://www.qttc.net/201208193.html

MySQL中應該怎樣儲存IP地址

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.