日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

提到 IP 地址(IPv4),大伙兒腦子里肯定馬上能浮現(xiàn)類似于 192.168.0.1、127.0.0.1 這種常見的 IP 地址,然后結(jié)合這個問題 “MySQL 中用什么數(shù)據(jù)類型存 IP 地址?”,于是乎脫口而出用 char 字符串類型存。

面試官一臉冷漠,你頓時意識到情況不對,又仔細(xì)琢磨了一下。

然后發(fā)現(xiàn),這個 IP 地址的長度是變化的,最短可以是 0.0.0.0 只需要 7 位,最長可以是 255.255.255.255 需要 15 位,于是自信地回答使用 varchar(15) 來存儲 IP 地址,并為自己能夠想到這一層而暗自竊喜。

誰知面試官竟輕蔑一笑,問你 “確定嗎?”,你覺得這是面試官在考驗(yàn)?zāi)悖谑菆?jiān)定的回答 “確定”。

然后就開始了下一題

......

人們經(jīng)常使用 varchar(15) 列來存儲 IP 地址,但事實(shí)上這并不是最優(yōu)解。

IP 地址的本質(zhì)是 32 位無符號整數(shù),類似于 192.168.0.1 這種點(diǎn)分十進(jìn)制的字符串寫法只是為了幫助人們理解和記憶,192.168.0.1 對應(yīng)的十進(jìn)制表示是 無符號整數(shù) 3232235521。

所以,說用字符串類型存 IP 地址的,其實(shí)是潛意識中以為 IP 地址是字符串,存的是點(diǎn)分十進(jìn)制的字符串,但正確的應(yīng)該是存 32 位的無符號整數(shù)

所謂有符號數(shù)其實(shí)就是將最高位作為符號位,比如 32 位的有符號 INT,最高位是符號位,剩下 31 位才是真實(shí)的數(shù)值,所以有符號 INT 的取值區(qū)間為:

無符號 INT 的取值區(qū)間為:

下表列出了 MySQL 出各個整數(shù)類型有符號和無符號的的取值范圍,在定義表時,可以在數(shù)據(jù)類型后面添加關(guān)鍵字 UNSIGNED 來定義無符號整數(shù),否則默認(rèn)為有符號整數(shù):

類型

有符號數(shù)取值范圍

無符號數(shù)取值范圍

TINYINT(1 字節(jié),8 bit)

-128 ? 127

0 ? 255

SMALLINT(2 字節(jié),16 bit)

-32768 ? 32767

0 ? 65535

MEDIUMINT(3 字節(jié),24 bit)

-8388608 ? 8388607

0 ? 16777215

INT(4 字節(jié),32 bit)

-2147483648 ? 2147483647

0 ? 4294967295

BIGINT(8 字節(jié),64 bit)

-9223372036854775808 ? 9223372036854775807

0 ? 18446744073709551615

結(jié)合上表,可以看出,32 位的無符號  INT 正好可以容納 IPv4 地址,下面是 INT UNSIGNED 和 VARCHAR(15) 兩種數(shù)據(jù)類型的對比:

  1. 存儲空間:4 字節(jié)的 INT 類型 15 字節(jié)的  VARCHAR(15) 更加節(jié)省存儲空間。另外,VARCHAR 除了會保存需要的字符數(shù),還會另加一個字節(jié)來記錄長度(如果列聲明的長度超過 255,則使用兩個字節(jié)記錄長度),所以 VARCHAR(15) 其實(shí)要占用 16 個字節(jié)。
  2. 檢索速度:如果我們要在 IP 地址上建立索引,那么對于字符串索引來說,整數(shù)索引的檢索速度簡直就是降緯打擊了,因?yàn)樽址愋偷谋容^是需要從第一位字符開始遍歷依次進(jìn)行的,速度較慢。

MySQL 非常貼心地提供了 IPv4 地址點(diǎn)分十進(jìn)制和無符號整數(shù)的相互轉(zhuǎn)換函數(shù),.NET_aton 和 inet_ntoa(底層是二進(jìn)制移位操作,速度很快):

圖片

當(dāng)然你更應(yīng)該在業(yè)務(wù)中去執(zhí)行這些轉(zhuǎn)換,減輕 MySQL 的壓力。

分享到:
標(biāo)簽:數(shù)據(jù)類型
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定