小螞蟻學習mysql性能優化(7)--數據庫結構優化--選擇合適的數據類型

    關於SQL以及索引優化的部分終於學習完了,今天開始進入第二層次的學習,數據庫的結構優化,第一部分,選擇合適的數據類型。
mysql

數據類型的選擇,重點在於合適二字。sql

1.    使用能夠存下數據的最小的數據類型數據庫

    好比,一個時間類型的一個數據,可使用varchar,可使用datetime,還可使用int,如何選擇,就看哪種類型對咱們來講是最小的,不言而喻,int類型相對來講是最小的數據類型。   
函數

2.    使用簡單的數據類型。學習

    int類型要比varchar類型在mysql處理上簡單的多,用int類型來存儲時間是一個很是好的選擇。大數據

3.    儘量的使用not null來定義字段。優化

    這是由於innodb的一些特性所決定的,對於一些爲null的字段,他可能須要一些額外的字段來進行存儲,同時也會增長IO和存儲的開銷,因此在進行表結構設計的時候,儘可能把每個字段設計成not null,而且給出一個默認值。
設計

4.    儘可能少的使用一些大的類型,好比:text類型索引

    若是非用不可的狀況下,最好把這些字段單獨提出來,存在一張附加表之中,一方面增長了主表的查詢效率,另外一方面在須要的時候對附加表進行這種大數據的查詢。
ip

使用int類型來存儲時間,利用FROM_UNIXTIME()和UNIX_TIMESTAMP()兩個函數來進行轉換。

如    FROM_UNIXTIME(1443922330,‘%Y-%m-%d’);    獲得一個格式化的:年-月-日

    UNIX_TIMESTAMP('2015-10-4');    獲得一個時間戳

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

如    INET_ATON('127.0.0.1')  返回一個整形

        INET_NTOA(ip)        返回一個ip地址

    存儲ip地址除了使用varchar以外,還可使用bigint類型存儲,varchar來存儲ip的話,大約須要15個字節,而bigint只須要8個字節,相差了7個字節,不要小看這7個字節,數據量很大的狀況下,7個字節能給咱們節省很大的存儲空間,而且會給IO效率,內存帶來很大的節約。能爲重要的是,不單單在空間上有節約,在ip地址的對比上,也會有好處,由於整形對比要比varchar對比更簡單,更高效。

相關文章
相關標籤/搜索