女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MySQL中用什么數據類型存IP地址

jf_ro2CN3Fa ? 來源:飛天小牛肉 ? 2023-08-25 14:39 ? 次閱讀

來源:飛天小牛肉

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

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

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

誰知面試官竟輕蔑一笑,問你 “確定嗎?”,你覺得這是面試官在考驗你,于是堅定的回答 “確定”。

然后就開始了下一題

......

人們經常使用 varchar(15) 列來存儲 IP 地址,但事實上這并不是最優解。

IP 地址的本質是 32 位無符號整數,類似于 192.168.0.1 這種點分十進制的字符串寫法只是為了幫助人們理解和記憶,192.168.0.1 對應的十進制表示是 無符號整數 3232235521。

所以,說用字符串類型存 IP 地址的,其實是潛意識中以為 IP 地址是字符串,存的是點分十進制的字符串,但正確的應該是存 32 位的無符號整數

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

無符號 INT 的取值區間為:

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

類型 有符號數取值范圍 無符號數取值范圍
TINYINT(1 字節,8 bit) -128 ? 127 0 ? 255
SMALLINT(2 字節,16 bit) -32768 ? 32767 0 ? 65535
MEDIUMINT(3 字節,24 bit) -8388608 ? 8388607 0 ? 16777215
INT(4 字節,32 bit) -2147483648 ? 2147483647 0 ? 4294967295
BIGINT(8 字節,64 bit) -9223372036854775808 ? 9223372036854775807 0 ? 18446744073709551615

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

存儲空間:4 字節的 INT 類型 15 字節的 VARCHAR(15) 更加節省存儲空間。另外,VARCHAR 除了會保存需要的字符數,還會另加一個字節來記錄長度(如果列聲明的長度超過 255,則使用兩個字節記錄長度),所以 VARCHAR(15) 其實要占用 16 個字節。

檢索速度:如果我們要在 IP 地址上建立索引,那么對于字符串索引來說,整數索引的檢索速度簡直就是降緯打擊了,因為字符串類型的比較是需要從第一位字符開始遍歷依次進行的,速度較慢。

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

afe138ae-4309-11ee-a2ef-92fbcf53809c.png

當然你更應該在業務中去執行這些轉換,減輕 MySQL 的壓力。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ip地址
    +關注

    關注

    0

    文章

    305

    瀏覽量

    17437
  • IPv4
    +關注

    關注

    0

    文章

    144

    瀏覽量

    20327
  • 數據類型
    +關注

    關注

    0

    文章

    237

    瀏覽量

    13818
  • mysql架構
    +關注

    關注

    0

    文章

    2

    瀏覽量

    711

原文標題:我懵了,如果要存 IP 地址,用什么數據類型比較好?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    變量的數據類型類型輸入連線的數據類型不兼容。

    請問這個vi錯在哪里?變量的數據類型類型輸入的是一樣的啊運行次序是會計貼士.vi在“支出情況”中點擊“保存”數據庫是MySQL@宗師級釣魚大師 @zhihuizhou @格式吶傷 @
    發表于 09-01 11:02

    照著別人的程序做了一遍,變量的數據類型和輸入類型不符

    @zhihuizhou主vi是會計貼士vi在獲取收入記錄.vi和獲取支出記錄vi中 有錯誤變量的數據類型類型輸入連線的數據類型不兼容。本來用的數據庫是
    發表于 09-03 14:46

    MySQL字符類型

    MySQL數據類型之字符串(string)
    發表于 06-14 11:58

    mysql是根據哪些原則來進行數據類型選擇的?

    mysql應該根據那些原則來進行數據類型的選擇!
    發表于 07-23 06:32

    vhdl數據類型

    VHDL中的標識符可以是常數、變量、信號、端口、子程序或參數的名字。VHDL中的數據類型可以分成四大類: 標量型(SCALAR TYPE):屬單元素的最基本的數據類型,通常用于描述一個單值數據對象
    發表于 03-30 15:59 ?11次下載

    MySQL支持的三種數據類型

    MySQL支持所有標準SQL數字數據類型。這些類型包括整數類型、定點類型、浮點類型和位置
    的頭像 發表于 05-03 17:33 ?3605次閱讀
    <b class='flag-5'>MySQL</b>支持的三種<b class='flag-5'>數據類型</b>

    MySQL為字段選擇合適數據類型

    在使用MySQL創建數據表時,經常會遇到如何為字段選擇合適的數據類型的問題,接下來我們一起分析字符串、數值、日期數據類型的選擇。
    的頭像 發表于 05-03 17:38 ?2956次閱讀
    <b class='flag-5'>MySQL</b>為字段選擇合適<b class='flag-5'>數據類型</b>

    Struct結構數據類型

    Struct類型是一種由多個不同數據類型元素組成的數據結構,其元素可以是基本數據類型,也可以是Struct、數組等復雜數據類型以及PLC
    的頭像 發表于 07-25 17:02 ?3332次閱讀

    結構數據類型(Struct)及應用案例

    Struct數據類型使用非常靈活,隨時可以使用,但是相對于PLC數據類型 (UDT) 有以下缺點,所以建議需要使用Struct類型時,可以使用PLC數據類型(UDT)代替。
    的頭像 發表于 07-27 16:10 ?2168次閱讀

    MySQL中如何存儲IP地址

    在看高性能MySQL第3版(4.1.7節)時,作者建議當存儲IPv4地址時,應該使用32位的無符號整數(UNSIGNED INT)來存儲IP地址,而不是使用字符串。 但是沒有給出具體原
    的頭像 發表于 08-11 11:02 ?1120次閱讀

    什么是數據類型轉換

    常用的3種數據類型:1、Python數據類型第一種:字符串(str)。 2、Python數據類型第二種:整數(int)。 3、Python數據類型第三種:浮點數(float)。
    的頭像 發表于 02-23 15:21 ?1953次閱讀

    定義數據類型

    在運算之前我們必須首先定義出數據類型,定義出腳本支持的數據類型,這是運算的基礎。 這一小節我們將定義出數據類型,在這里我們暫時定義四個數據類型:
    的頭像 發表于 03-03 10:10 ?1212次閱讀

    PLC數據類型的種類 常見的轉換方法

      PLC數據類型是指編程軟件中用來表示變量、常量、對象等數據類型。不同的PLC軟件可能會支持不同的數據類型,但常見的PLC
    發表于 03-17 17:41 ?3.8w次閱讀

    MySQL數據庫的url地址

    (Protocol):MySQL數據庫使用的協議通常是MySQL自定義的協議,它使用TCP/IP協議在客戶端和服務器之間進行通信。在URL地址
    的頭像 發表于 12-06 10:58 ?3022次閱讀

    plc數據類型怎么理解和應用

    PLC(可編程邏輯控制器)是一種工業自動化設備,用于控制機械和工業過程。在PLC編程中,數據類型是非常重要的概念,因為它決定了程序中數據的存儲和處理方式。正確理解和應用PLC數據類型是編寫有效、可靠
    的頭像 發表于 12-19 11:39 ?5310次閱讀