随着项目的运行,mysql数据库表中的数据将会随之增加,当数据增加到一定量级的时候,比如亿级,mysql的查询会变得非常缓慢,严重影响用户体验,这个时候我们会采取分表处理。
根据用户ID与表的数量求余来进行分布,今天我们要通过求余来实现分表。
1. 建立5张用户表,字段:ID,user_name;
2. 表名分别为user_1、user_2、user_3、user_4、user_5;
3. 利用求余,将10条数据分别写入到5张表中;
4. 利用求余,查询指定ID的用户的名称;
<?php
namespace App\Http\Models;
use Illuminate\Database\Eloquent\Model;
use DB;
class User extends Model
{
public function getAdd(){
// $id=DB::table('user')->insertGetId($post);
$rows=DB::table('user')->get();
$row=[];
foreach($rows as $k => $v){
$row[$v->id]['id']=$v->id;
$row[$v->id]['user_name']=$v->user_name;
}
foreach($row as $id => $v){
if($id%5==1){
$res=DB::table('user_1')->insert($v);
}
if($id%5==2){
$res=DB::table('user_2')->insert($v);
}
if($id%5==3){
$res=DB::table('user_3')->insert($v);
}
if($id%5==4){
$res=DB::table('user_4')->insert($v);
}
if($id%5==0){
$res=DB::table('user_5')->insert($v);
}
}
return $res;
}
public function getRow($id){
if($id%5==1){
$row=DB::table('user_1')->where(['id'=>$id])->first();
}
if($id%5==2){
$row=DB::table('user_2')->where(['id'=>$id])->first();
}
if($id%5==3){
$row=DB::table('user_3')->where(['id'=>$id])->first();
}
if($id%5==4){
$row=DB::table('user_4')->where(['id'=>$id])->first();
}
if($id%5==0){
$row=DB::table('user_5')->where(['id'=>$id])->first();
}
return $row;
}
}