mysql根据数据数量自动建表.当表数量超过100万时自动建表.以此类推

天道行jian 发布于 2016/09/05 17:27
阅读 799
收藏 0
mysql根据数据数量自动建表.当表数量超过100万时自动建表1,200万时创建表2,300万表3.以此类推.如果每次插入的时候查询下主id,造成访问数据表过多.有没有更好的方法
加载中
0
太黑_thj
太黑_thj
主键设自增
天道行jian
然后呢.什么时候建表.总不能每次都查询,有没有细节性的代码
0
Tuesday
Tuesday

插入时不是会返回主键id吗? 你就知道到达100万没有, 同时创建表, 进入新表流程..

可以把新表名写文件缓存, 

天道行jian
返回主键id是一次查询吧.意思还是要查100万次吗````
0
魔力猫
魔力猫
折腾得这么麻烦,还不如直接用Oracle呢。
魔力猫
魔力猫
回复 @天道行jian : 不知道你们用的版本是多少,实际上5.1以后的MySQL就开始支持分区表了,你们没测试过分区表的表现? 如果MySQL常规版本无法满足你们的需求,建议还是尽量转向商业数据库,或者购买魔改版云服务。
天道行jian
oracle没用过...
0
Adairs
Adairs
分区表会是更好的选择
天道行jian
能不能说的再详细点 谢谢
0
宏哥
宏哥
PostgreSQL 
0
IdleMan
IdleMan
找个支持分区表的 就不用折腾了
天道行jian
然后呢.怎么做``
0
天道行jian
答案自己想明白了.附上代码
//测试插入分表
    public function insert(){
    	$dat = array('id'=>'');
    	$lis = M('test')->add($dat);
    	$name = (int)ceil($lis/10);
    	$data = array('name'=>'a');
     	$list = M('test_'.$name)->add($data);
    	if($lis%10 == 0){
    		$newName = $name+1;
    		$conn = mysql_connect("192.168.1.73","zhanghao","mima") or die("Cannot connect to the database.");
			mysql_select_db("minsheng",$conn) or die("Cannot connect to the database testdb.");
			$sql = "create table ms_test_".$newName."(
			    id int not null auto_increment ,
			    name char(22) not null,
			    primary key(id)
			    )";
			mysql_query($sql) or die(mysql_error());
    	}
    	
    	
    }



返回顶部
顶部