V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
444683462
V2EX  ›  问与答

有没高手总结下 mysql 字段设置的经验

  •  1
     
  •   444683462 · Oct 21, 2014 · 2304 views
    This topic created in 4210 days ago, the information mentioned may be changed or developed.
    比如
    @手机号码 varchar
    @网络IP字段,除特殊情况一律用bigint来记录inet_aton值;
    @时间相关字段:用int型时间戳;放弃使用datatime这样的时间类型
    @能用int的,坚决不用bigint
    @用DECIMAL代替FLOAT和DOUBLE存储精确浮点数
    @ 使用TINYINT来代替ENUM类型

    这种类似的经验之谈 还有没 或者哪里有文章总结一下
    Sunyanzi
        1
    Sunyanzi  
       Oct 22, 2014
    十五个小时了还是没人理 ... 你自己也该知道你这个问题问得有多没水准了 ...

    字段的使用没有什么经验之谈 ... 这只是针对场景的个人习惯罢了 ...

    没人说手机号码不能用 UNSIGNED BIG INT 存 ... 就像没人说 IP 不能用 CHAR(16) 一样 ...

    手机号用数值型存的好处是省空间 ... 坏处是无法存加号及括号 ... 以及批量查询会慢些 ...

    IP 用数值形存的好处依然是省空间 ... 坏处是存取和判断范围的时候都需要额外的运算 ...

    至于时间相关字段 ... 也没人说必须以时间戳的形式存 UNSIGNED INT ...

    MySQL 自己提供了许多很好用的时间操作函数 ... 为了存进整形字段而抛弃这些函数是愚蠢的 ...

    说来当我看到你写出「能用 INT 就不用 BIGINT」这种说法的时候我就不准备继续回答了 ...

    这就像说能用 VARCHAR 就不用 TEXT 一样 ... 何况你置 TINYINT 和 SMALLINT 于何处 ..?

    这么说你是不是还应该推出能用 SMALLINT 不用 INT 能用 TINYINT 不用 SMALLINT ..?

    先这样吧 ... 总而言之一句话 ... MySQL 的每种数据类型都有其存在的意义 ...

    先弄清楚每种数据类型为什么存在以及你需要存储的数据会参与怎样的运算再来问吧 ...
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2566 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 12:38 · PVG 20:38 · LAX 05:38 · JFK 08:38
    ♥ Do have faith in what you're doing.