mysql-水平分表-垂直分表

https://blog.csdn.net/qq_17392301/article/details/45501597?utm_source=blogxgwz4

Mysql的分表技术 
水平分割技术:->以qq用户登录为例: 


创建uuid表
create table uuid (id int unsigned primary key auto_increment);

创建3张用户表
create table qqlogin0
(id int unsigned primary key,
name varchar(32) not null default '',
pwd char(32) not null default '')engine=myisam  charset utf8;

create table qqlogin1
(id int unsigned primary key,
name varchar(32) not null default '',
pwd char(32) not null default '')engine=myisam  charset utf8;

create table qqlogin2
(id int unsigned primary key,
name varchar(32) not null default '',
pwd char(32) not null default '')engine=myisam  charset utf8;

register.php

<?php

    //完成注册
    $name=$_GET['name'];
    $pwd=$_GET['pwd'];

    if(empty($name)||empty($pwd)){
        die('fail');
    }

    $con=mysql_connect('localhost','root','root');
    if(!$con){
        die('err');
    }
    mysql_select_db('temp');

    $sql="INSERT INTO uuid values(null)";

    if(mysql_query($sql,$con)){

        $id=mysql_insert_id();
        //确定把这个用户添加到哪个表
        $tabname='qqlogin'.$id%3;
        $pwd=md5($pwd);
        $sql="INSERT INTO $tabname values($id,'$name','$pwd')";

        if(mysql_query($sql,$con)){
            echo '编号为 '.$id.' 用户添加到'.$tabname;
        }else{
            echo '添加失败';
        }

    }

login.php

<?php

    //完成登录
    $id=$_GET['id'];
    $pwd=$_GET['pwd'];

    if(empty($id)||empty($pwd)){
        die('fail');
    }

    $con=mysql_connect('localhost','root','root');
    if(!$con){
        die('err');
    }
    mysql_select_db('temp');

    $tabname='qqlogin'.$id%3;

    $sql="SELECT pwd FROM $tabname WHERE id=$id";
    $res=mysql_query($sql,$con);
    if($row=mysql_fetch_assoc($res)){

        echo '在'.$tabname.'存在 id为='.$id;
    }else{
        echo '错误.或者用户不存在!';
    }

对水平分割的考虑. 
②其它的条件 
思考: 如果我们做的是一个平安保险公司的一个订单(8999999999000000条)查询功能. 
,如何处理海量表?->按时间. 
分表的标准是依赖业务逻辑(时间/地区/….) 
安装字符不同. a-z 
我们给用户提供的查询界面一定是有条件,不能让用户进行大范围.(世界),如果需要的可以根据不同的规则,对应多套分表. 
检索时候,带分页条件,减少返回的数据. 
项目中,灵活的根据需求来考虑->需求

垂直分割:

所谓垂直分割,就是把某表的大字段,并且不是经常查询,单独的放入到一张表去,比如下面案例: 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值