MySQL数据库优化

1.字段属性选择

  1. 邮政编码 直接是CHAR(6)就可

  2. 能用MEDIUMINT就不用BIGIN来定义整型字段

  3. 尽量把字段设置为NOT NULL

    有NULL的列值会使得索引、索引统计和值比较更加复杂。可为NULL的列会使用更多的存储空间,在MySQL中也需要对它进行特殊处理,当可为NULL列做索引时,每个索引需要一个额外的字节,在MyISAM更有可能导致固定大小的索引变成可变大小索引,在InnoDB中使用单独的位(bit)存储NULL值。

  4. 省份,性别定义为ENUM类型,MySQL中ENUM类型作为数值类型处理

  5. varchar字段定义的长度指的是字符长度,哪怕一个多字节字符也只是一个字符,如中文字符。
    CHAR适合存储字符很短,或者所有值接近一个长度时,如存储MD5码、SESSION_ID等
  6. 时间和日期
    TIMESTAMP:它保存了从1970年1月1日午夜以来的秒数,也就是常说的时间戳,它使用4个字节来存储,依赖于时区。除了特殊情况外,通常我们应该尽量使用TIMESTAMP。

    DATETIME:这个类型能保存1001到9999年,精度为秒,与时区无关,使用8个字节存储,存储格式封装为YYYYMMDDHHMMSS的整数,因此它是一种可排序的类型,显示时以ANSI标准定义的日期和时间表示方法显示。

    varcahr参考:http://cau99.blog.51cto.com/1855224/383023/

结论:
1.当一个数据类型可以有多种选择多种类型的时候,应该优先考虑数字类型,其次是日期或二进制类型,最后应该是字符类型。

2.对于相同级别的数据类型,应该优先选择占用空间小的数据类型。

3. 数据类型会影响存储空间的开销

4. 数据类型会影响数据查询性能

注:数值类型的处理比文本类型快很多

2.存储引擎选择

这里写图片描述
注:一般使用InnoDB引擎则可以支持各种功能。

3.MySQL中的函数

1. 数学函数

这里写图片描述

2. 字符串函数

这里写图片描述

3. 日期时间函数

这里写图片描述

非常详细的MySQL数据库详解: http://blog.csdn.net/chenshun123/article/details/50894875
数据类型和常用字段属性:http://www.jb51.net/article/55853.htm

你可能感兴趣的:(mysql)