数据库分表设计、垂直分表、水平分表

1. 垂直分表
1、 原表字段有 C1, C2, C3, C4, C5, C6, C7
2、 分表后表1字段:C1, C2, C3, C4
3、 分表后表2字段:C1, C5, C6, C7
在执行查询的时候根据C1主键查询

2. 水平分表

  1. 原表字段有 C1, C2, C3, C4, C5, C6, C7
  2. 分表后表1字段:C1, C2, C3, C4, C5, C6, C7 C1编号从1 -100万
  3. 分表后表2字段:C1, C2, C3, C4, C5, C6, C7 C1编号从100.0001万 – 200万
  4. 分表后表3字段:C1, C2, C3, C4, C5, C6, C7 C1编号从200.0001万 – 300万
    在执行查询的时候根据C1判断该请求那个表获取数据

TP5在执行的实例:
在model层做分表功能

   protected $table = 'ljj_poster';
//    protected $table = 'ljj_poster_1';
//    protected $table = 'ljj_poster_2';
//    protected $table = 'ljj_poster_3';

    /**
     * type 分表的方式
     * num 分表的数量
     */
    protected $rule = [
                'type' => 'mod', // 分表方式
                'num'  => 3     // 分表数量
    ];

    /**
     * 添加数据
     * $data 要添加数据的参数
     */
    public function inset_data($data){
        //先添加总表数据表
        $id = self::insertGetId($data);
        //添加的ID
        $temparr = array('id'=>$id);
        //通过partition自动分表写入
        $res = self::partition($temparr,'id',$this->rule)->insert($data);
        return $res;
    }
	/**
     * 查询数据
     */
    public function select_data(){
        //要查询的ID
        $temparr = array('id'=>100);
        //通过partition根据条件自动分表去查询
        $res = self::partition($temparr,"id",$this->rule)
            ->where(array('id'=>100))->select();
        return $res;
    }
    /**
     * 修改数据
     * $data 要修改数据的参数
     */
    public function update_data($data){
        //要修改的ID
        $temparr = array('id'=>100);
        //通过partition根据条件自动分表去更新
        $res = self::partition($temparr,"id",$this->rule)
            ->where(array('id'=>100))->update($data);
        return $res;
    }
    /**
     * 修改数据
     * $data 要删除数据的参数
     */
    public function delete_data($data){
        //要删除的ID
        $temparr = array('id'=>100);
        //通过partition根据条件自动分表去删除
        $res = self::partition($temparr,"id",$this->rule)
            ->where(array('id'=>100))->delete($data);
        return $res;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值