mysql数据类型优化

定义合适的数据类型对Mysql性能提升非常重要

  1. IPV4地址的存储:IPV4地址,例如:127.0.0.1  =  10000000 00000000 00000000 00000001,实际上是一个32位的无符号整数,用小数点分隔开方便阅读,并不是字符串,所以存储时,应该使用unsigned int来存储。显示的时候用INET_ATON来转换成ip格式,更新或插入时使用INET_NTOA转换成整数插入。
  2. 时间的存储:很多人喜欢用INT来存储时间,实际上,这并不能带来任何性能上的提交;使用内置的DATETIME和TIMESTAMP更方便,因为Mysql内置的很多时间函数可以对时间进行处理。一般情况下,我们都尽量使用TIMESTAMP来存储时间,因为它只占用4个字节,而DATETIME占用8个字节,TIMESTAMP时间到2038年,足够用了。关于时间的比较应该使用整数的比较方式,例如下面两个SQL的执行效率,对于千万行的数据处理差距是巨大的。
    -- 取前一天的数据
    -- 高效的执行
    SELECT 
        *
    FROM
        room_match.view_shouji
    where
        writetime between 
    now() - INTERVAL 1 day  
    and now();
    
    -- 低效的比较
    SELECT 
        *
    FROM
        room_match.view_shouji
    where date(writetime) = "2013-12-15"
  3. 对确定类型的列使用ENUM,ENUM是表面显示为字符串,实际存储为整数的类型,使用 enum列名+0可以查看存储的整数值。使用性别,国家等固定的值可以使用。
原文地址:https://www.cnblogs.com/trying/p/3475883.html