建议:1.如果是商品 字段却很长,表占用空间很大,检索表的时候需要执行大量的IO,严重降性能。这时需要把大的字段拆分到另一个表,并且该表与原表是一对一的关系。也就是把不常用的字段丢在另外一张表上去
2.如果数据量太多(我想哪怕大超市系统数据量也不会很多,建议采用1),可以根据条码或者名字拆分,已条码为例 条码为1的建立goods_one表
建表语句INSERT INTO goods_one(字段) SELECT 字段 FROM goodsWHERE 你的条件
如果你确实要执行你的想法
创建存储过程
CREATE PROCEDURE 。。。
begin
定义参数(游标)
查询所有供应商
游标遍历 更具供应商 查询goods表
创建表 插入数据
end
最好开启事务
能帮的就这么多了 望采纳
1.按时间分表
这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录、微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按月分表。
2.按区间范围分表
一般在有严格的自增id需求上,如按照user_id水平分表:
table_1 user_id从1~100w
table_2 user_id从101~200w
table_3 user_id从201~300w
...
3.hash分表
通过一个原始目标的ID或者名称通过一定的hash算法计算出数据存储表的表名,然后访问相应的表。
按如下分10张表:
function get_hash_table($table, $userid)
{
$str = crc32($userid)
if ($str < 0) {
$hash = "0" . substr(abs($str), 0, 1)
} else {
$hash = substr($str, 0, 2)
}
return $table . "_" . $hash
}
echo get_hash_table('message', 'user18991') //结果为message_10
echo get_hash_table('message', 'user34523') //结果为message_13
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)