大部分数据没有行溢出的text字段是否需要拆表

鸠摩智首席音效师
  • 428

比如一个论坛系统的回帖表,多数情况下这个回帖的内容都是简短的,只有少部分内容长。

而在显示中这个内容字段是常用的,还有必要把这个内容字段单独拆出来吗?

<?php

namespace Koogua\Model\Entity;

class Reply extends EntityBase
{

    const STATUS_PENDING = 1; // 待定
    const STATUS_APPROVED = 2; // 审通
    const STATUS_REJECTED = 3; // 审拒
    const STATUS_DELETED = 4; // 删除

    /**
     * 主键编号
     * @var integer
     */
    public $id;
    
    /**
     * 回复内容
     * @var string                                                                
     */
    public $content;
    
    /**
     * 提及用户
     * @var string 
     */
    public $mentions;
    
    /**
     * 用户编号
     * @var integer 
     */
    public $userId;
    
    /**
     * 主题编号
     * @var integer 
     */
    public $topicId;
    
    /**
     * 版块编号
     * @var integer 
     */
    public $forumId;
    
    /**
     * 置顶标识
     * @var integer 
     */
    public $sticked;
    
    /**
     * 状态标识
     * @var integer 
     */
    public $status;
    
    /**
     * 评论计数
     * @var integer 
     */
    public $commentCount;
    
    /**
     * 关注计数
     * @var integer 
     */
    public $watchCount;
    
    /**
     * 收藏计数
     * @var integer 
     */
    public $favoriteCount;
    
    /**
     * 赞同计数
     * @var integer 
     */
    public $agreeCount;

    /**
     * 反对计数
     * @var integer 
     */
    public $opposeCount;
    
    /**
     * 举报计数
     * @var integer 
     */
    public $reportCount;
    
    /**
     * 创建时间
     * @var integer 
     */
    public $createTime;

    /**
     * 更新时间
     * @var integer 
     */
    public $updateTime;

    public function getSource()
    {
        return 'Reply';
    }

    public function beforeCreate()
    {
        $this->createTime = time();
    }
    
}
回复
阅读 2.2k
3 个回答

个人感觉没必要,从语义上来讲内容属于回帖表比较关键的数据,另外分出来的话,每次需要连表查或者分两次差太麻烦(而且这种基础数据,几乎是100%需要的,如果是额外信息到可以考虑放出来)。

另外如果表太大的话,可以考虑分库分表。

学想有成
  • 625

你可以先把你的表结构,粘贴出来。研究研究,我们在讨论讨论

规定回帖字数,没有必要拆表。

宣传栏