小蚂蚁学习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对比更简单,更高效。

相关文章
相关标签/搜索