数据库存在大量重复的字段,该如何优化? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在答技术问题时复制粘贴 AI 生成的内容
mytry
V2EX    程序员

数据库存在大量重复的字段,该如何优化?

  •  
  •   mytry 2019-03-25 16:48:33 +08:00 2933 次点击
    这是一个创建于 2472 天前的主题,其中的信息可能已经有所发展或是发生改变。
    之前用 MySQL 存储 Web 日志时想到的一个问题。

    有些字段例如 method,总共才 GET、POST 等几种可能,因此能用 enum 类型。但像域名、路径这类,虽然存在大量重复的值,但由于是不固定的,显然不能用 enum 而只能存原始值。

    不知数据库底层对于大量重复的值,会不会只存储一份,然后通过引用的方式存储?

    还是只能通过人工来优化?比如新建一个表专门存放 <id, 域名>,然后原始表只存 id,这样倒是能让重复字段只占极小的字节,不过这个过程应该在数据库底层实现比较好吧。
    6 条回复    2019-03-25 21:27:21 +08:00
    xiangyuecn
        1
    xiangyuecn  
       2019-03-25 17:37:10 +08:00
    我对 UA 就是这样干的,另外建了一个表做映射,大量的 UA 是一致的而且还长,就是多了一个转换步骤麻烦了点。
    saulshao
        2
    saulshao  
       2019-03-25 18:24:45 +08:00
    似乎不会用引用的方式存储,至少我接触过的数据库没有给我这种印象。即基本上表占用空间的增长可以根据字符串长度 X 行数算出来......
    YaYamilk
        3
    YaYamilk  
       2019-03-25 18:35:41 +08:00
    看业务需求,一种是你说的做映射,另外一种是重复字段存一条,非重复部分作为字符串存然后取的时候分隔。如果还有请告诉我,我也想知道这个
    RainyH2O
        4
    RainyH2O  
       2019-03-25 18:51:40 +08:00
    NoSQL
    opengps
        5
    opengps  
       2019-03-25 18:56:26 +08:00
    这个情况,感觉没必要非得去省这部分空间。web 日志不是需要太高效率读出的数据,于其花大精力优化,不如直接多分几个表存下,读取时候麻烦点而已
    sun1991
        6
    sun1991  
       2019-03-25 21:27:21 +08:00
    从空间上来说, 浪费这一点点磁盘空间九牛一毛, 不值得花精力.
    如果是查询返回数据量太大导致性能问题的话, 考虑垂直切分表, 把不太常用的划分到另外的表里去, 有需要时再链接.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1232 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:31 PVG 01:31 LAX 09:31 JFK 12:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86