V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
linwu
V2EX  ›  问与答

mysql 数据库表设计

  •  
  •   linwu · 2019-09-05 23:47:14 +08:00 · 1778 次点击
    这是一个创建于 1906 天前的主题,其中的信息可能已经有所发展或是发生改变。

    表设计的过程中每列的类型, 像整数类型,指定是 tinyint,是不是可以直接指定 int, 字符类型,指定 varchar,是不是可以直接指定 text, 这种有意义吗? 反正占用内存的大小也是看列的实际值, 如果使用 tinyint 和 varchar 还可能会有存储值超出范围的情况

    5 条回复    2019-09-06 08:56:33 +08:00
    Carseason
        1
    Carseason  
       2019-09-06 01:41:01 +08:00
    加索引的时候超出长度是加不了的,text 这种类型就无法做索引
    如果字段要合理一点最好还是限制一下类型的好,
    mysql 限制可以拒绝一部分溢出的数据,当然业务逻辑也要配合好
    MonoLogueChi
        2
    MonoLogueChi  
       2019-09-06 08:37:32 +08:00 via Android
    你想过用 text 字段做检索是什么样的吗
    340244120w
        3
    340244120w  
       2019-09-06 08:50:36 +08:00 via iPhone
    新版本我不清楚 反正之前 mysql 临时表里每个字段的内存占用和字段的限制长度是相关的
    340244120w
        4
    340244120w  
       2019-09-06 08:50:36 +08:00 via iPhone
    新版本我不清楚 反正之前 mysql 临时表里每个字段的内存占用和字段的限制长度是相关的
    340244120w
        5
    340244120w  
       2019-09-06 08:54:35 +08:00 via iPhone
    而且 int 类型那个长度只影响显示,也就是 int2 你存数字 99999 也能存,也能 select 出来,只用 gui 客户端查询只能显示两位。

    Text 类型可以用最前面的 n 个字符作为索引,这倒不是问题
    340244120w
        6
    340244120w  
       2019-09-06 08:56:33 +08:00 via iPhone
    3 楼说错了 内存占用和字段类型相关
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1211 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:24 · PVG 02:24 · LAX 10:24 · JFK 13:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.