求助大神们,分表能不能用存储过程???

hellNo 2013-09-29 03:10:39
有个表数据超过1000W,打开或者查询很慢,所以要分表,表分区就不要说了,必须要分表~

而且老板要求必须得用存储过程实现,要动态判断UNION表里最后一个表的数据,如果数据大于10W,就自动新建一个表,并且把新建的表名添加到总表的UNION里

我有个总表 tableALL ,里面 UNION 了 t1,t2,t3 ,三个表

我现在新建3个表

CREATE TABLE t1 LIKE testTable
CREATE TABLE t2 LIKE testTable
CREATE TABLE t3 LIKE testTable

alter table t1 ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC
alter table t2 ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC
alter table t3 ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

CREATE TABLE tableALL LIKE testTable;
ALTER TABLE tableALL ENGINE=MERGE UNION=
(t1,t2,t3) INSERT_METHOD=LAST;

查询和插入都对tableALL操作,因为INSERT_METHOD=LAST ,所以插入都是插入到UNION最后一个表里

我有几个问题想请教大神们,我搜了半天实在寥寥无几啊


1.我可以查询到tableALL里UNION最后一个表的名字吗?比如t3
2.我得到UNION里最后一个表的名字,然后查询总数,如果数据大于多少,然后新建t4.
我可以查询到tableALL总表里的UNION表的名字吗?比如得到t1,t2,t3
这样我就能用

ALTER TABLE tableALL ENGINE=MERGE UNION=
(t1,t2,t3,t4) INSERT_METHOD=LAST; 把t4添加到UNION里

以上我问的俩问题能实现吗?求大神帮助啊,我搜了1天了,搜不到啊~~~

谢谢~~~ 我有描述的不清楚的地方吗??
...全文
561 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2013-09-29
  • 打赏
  • 举报
回复
show create table tableALL ;
WWWWA 2013-09-29
  • 打赏
  • 举报
回复
用show CREATE TABLE `tableall` 可以得到建表语句 mysql -uroot -p123 -N -e "show CREATE TABLE `tableall`">r:\temp\123.txt 对得到的文本进行分析

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧