日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库-优化-数据库结构的优化-数据类型

發布時間:2024/4/13 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库-优化-数据库结构的优化-数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型選擇

數據類型的選擇,重點在于“合適”二字,如何確定選擇的數據類型是否合適了?

  • 使用可以存下你的數據的最小的數據類型。(時間類型數據:可以使用varchar類型,可以使用int類型,也可以使用時間戳類型)
  • 使用簡單的數據類型,int要比varchar類型在mysql處理上簡單。(int類型存儲時間是最好的選擇)
  • 盡可能的使用not null定義字段。(innodb的特性所決定,非not null的值,需要額外的在字段存儲,同時也會增加IO和存儲的開銷)
  • 盡量少用text類型,非用不可時最好考慮分表。
  • 案例

    案例一:int類型存儲時間-時間轉換

    ????????????? 使用int來存儲日期時間,利用FROM_UNIXTIME(),UNIX_TIMESTAMP()兩個函數來進行轉換。

    創建表:

    create table test( id int auto_increment not null, timestr int , primary key(id) );

    導入數據:

    insert into test (timestr) values (unix_timestamp('2018-05-29 16:00:00'));

    查詢數據:如下圖所示:

    時間進行轉換:

    select FROM_UNIXTIME(timestr) from test;

    結論:

    1、unix_timestamp()函數是將日期格式的數據轉換為int類型

    2、FROM_UNIXTIME(timestr)函數是將int類型轉換為時間格式

    案例二:ip地址的存儲

    在我們的外部應用中,都要記錄ip地址,大部分場合都是varchar(15)進行存儲,就需要15個字節進行存儲,但是bigint只需要8個字節進行存儲,當數據量很大的時候(千萬級別的數據),相差7個字節,但是不能小看這7個字節,給大家算一下。

    一個字段就多這么多,那如果我們這樣的字段需要上萬個字段了?是需要很多的存儲空間的。

    使用bigint(8)來存儲ip地址,利用INET_ATON(),INET_NTOA()兩個函數來進行轉換。

    創建表:

    create table sessions( id int auto_increment not null, ipaddress bigint, primary key (id) );

    導入數據:

    insert into sessions (ipaddress)values (inet_aton('192.168.0.1'));

    轉換:

    select inet_ntoa(ipaddress) from sessions;

    檢索:

    ?

    總結

    以上是生活随笔為你收集整理的数据库-优化-数据库结构的优化-数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。