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

目前主流 cms 的数据库设计里,把文章分成两个表,一个表只包含 id 和 content,一个表包含其他字段(如标题,日期,作者,类别。。。),这么做的好处是什么呢?直接在一个表里,不是更方便吗?

  •  
  •   akaayy · 2015-09-15 09:25:36 +08:00 · 9390 次点击
    这是一个创建于 3353 天前的主题,其中的信息可能已经有所发展或是发生改变。
    22 条回复    2015-09-15 20:43:26 +08:00
    noea
        1
    noea  
       2015-09-15 09:27:39 +08:00   ❤️ 1
    是方便数据量大的话再进行分表。
    lavadore
        2
    lavadore  
       2015-09-15 09:29:14 +08:00   ❤️ 1
    方便扩展,添加各种插件不需要修改文章主表了,另外数据量大了后效率也比一个表要高
    kchum
        3
    kchum  
       2015-09-15 09:29:23 +08:00 via iPhone   ❤️ 1
    content 可大可小,其他字段可以预见。放在一起,这个表体积更大,影响效率。
    qiayue
        4
    qiayue  
       2015-09-15 09:31:43 +08:00   ❤️ 1
    因为 content 只有在详情页面才需要取出来,更多的时候在文章列表中我们只需要标题作者之类的信息,这样可以更快的取出数据。
    chenjf2k
        5
    chenjf2k  
       2015-09-15 09:32:05 +08:00   ❤️ 1
    个人建议,一般情况不需要分表,分表多数用来装 B 。
    qiayue
        6
    qiayue  
       2015-09-15 09:35:37 +08:00
    @chenjf2k 个人博客不需要,但是公司产品你不分试试,我们一个 APP ,日活才几万就感觉以前不分表简直就是脑子进屎了
    chenjf2k
        7
    chenjf2k  
       2015-09-15 09:45:56 +08:00
    @qiayue 具体情况需要具体分析,就我公司开发电商 ERP 的经验来讲,一般(低于 50 字段)分不分表没感觉有什么问题。
    66beta
        8
    66beta  
       2015-09-15 09:47:22 +08:00   ❤️ 1
    wordpress 分得就蛮好的
    FrankFang128
        9
    FrankFang128  
       2015-09-15 09:49:23 +08:00   ❤️ 1
    元数据和详情
    dbfox
        10
    dbfox  
       2015-09-15 09:50:46 +08:00   ❤️ 1
    赞这种方式,

    行的总字节数越少,查询速度越快,而 content (一般来说数据比较多一点)
    如果使用了 orm 读一条文章信息,会磁盘 IO 会比较大
    ipconfiger
        11
    ipconfiger  
       2015-09-15 09:53:45 +08:00   ❤️ 1
    就现在普遍使用 orm 的情况下,分表无疑效率要高一些,不用 orm 的话,可以通过避免 select * 来规避结果集输出无用信息,但是在使用 orm 的时候谁会吃多了这么干,那不是比写 SQL 更麻烦么。


    @chenjf2k 经验主义的坏处在于适用性窄,贵司的电商 ERP 的数据量级不知能否透露,不然对楼主误导很大,因为楼主也没说他要的 CMS 是哪个量级的
    chenjf2k
        12
    chenjf2k  
       2015-09-15 10:08:32 +08:00
    @ipconfiger
    我查了订单表( 80 个字段), 21 万条记录。不用 ORM 。
    chenjf2k
        13
    chenjf2k  
       2015-09-15 10:09:11 +08:00
    运行半年,数据量还不算大。
    ipconfiger
        14
    ipconfiger  
       2015-09-15 10:10:09 +08:00
    21W 这个量级,只能用 tiny 来形容,没感觉是应该的,之前把开房记录导入数据库做了个查询也都是上亿的数据量级呢
    refresh
        15
    refresh  
       2015-09-15 10:18:46 +08:00
    @chenjf2k 21 万量级太小,超过百万再谈分表
    lavadore
        16
    lavadore  
       2015-09-15 10:21:59 +08:00
    @chenjf2k 楼主已经说了是 cms 了,请先搞清楚。
    chenjf2k
        17
    chenjf2k  
       2015-09-15 10:32:56 +08:00
    感觉大家的热情很高,超过群主。呵呵~,
    也许是我说重了点:“分表用来装 B ”,触动大家的痛处。
    好吧,我赞同:分表很有用,特别是大数据级的,一定要分清楚。
    2015813
        18
    2015813  
       2015-09-15 12:01:16 +08:00 via iPhone
    分表是为了几何级数据量考虑的,有远见的 cms 都这么干!
    jsq2627
        19
    jsq2627  
       2015-09-15 13:59:41 +08:00 via iPhone
    没接触过大型数据库。表示不理解为何字段数量会影响查询性能。不是应该是记录数量影响性能吗?楼上可以说说字段过多性能瓶颈在哪里吗?
    jsq2627
        20
    jsq2627  
       2015-09-15 14:02:03 +08:00 via iPhone
    @ipconfiger 高级的 orm 还是能很好的控制 select 过程的
    ipconfiger
        21
    ipconfiger  
       2015-09-15 14:12:27 +08:00
    @jsq2627 很麻烦的,还不如写 raw sql 了
    phoenixlzx
        22
    phoenixlzx  
       2015-09-15 20:43:26 +08:00
    看过一眼 NodeBB 的数据库,就一个 objects collection

    ... 虽然不是 SQL 不过也算是什么玩意都揉一起了...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 06:27 · PVG 14:27 · LAX 22:27 · JFK 01:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.