MySQL数据库分表优化试验_MySQL数据库_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

MySQL数据库分表优化试验

作者:黑客防线网安MYSQL维护基地 来源:黑客防线网安MYSQL维护基地 浏览次数:0

本篇关键词:试验优化declare
黑客防线网安网讯:  我们的项目中有好多不等于的情况。今天写这篇文章简单的分析一下怎么个优化法。  这里的分表逻辑是根据t_group表的user_name组的个数来分的。  因为这种情况单独user_name字段上的索...

  我们的项目中有好多不等于的情况今天写这篇文章简单的分析一下怎么个优化

  这里的分表逻辑是根据t_group表的user_name组的个数来分的。

  因为这种情况单独user_name字段上的索引就属于烂索引。起不了啥名明显的效果。

  1、试验PROCEDURE.

DELIMITER $$
DROP PROCEDURE `t_girl`.`sp_split_table`$$
CREATE PROCEDURE `t_girl`.`sp_split_table`()
BEGIN
 declare done int default 0;
 declare v_user_name varchar(20) default '';
 declare v_table_name varchar(64) default '';
 -- Get all users' name.
 declare cur1 cursor for select user_name from t_group group by user_name;
 -- Deal with error or warnings.
 declare continue handler for 1329 set done = 1;
 -- Open cursor.
 open cur1;
 while done <> 1
 do
  fetch cur1 into v_user_name;
  if not done then
   -- Get table name.
   set v_table_name = concat('t_group_',v_user_name);
   -- Create new extra table.
   set @stmt = concat('create table ',v_table_name,' like t_group');
   prepare s1 from @stmt;
   execute s1;
   drop prepare s1;
   -- Load data into it.
   set @stmt = concat('insert into ',v_table_name,' select * from t_group where user_name = ''',v_user_name,'''');
   prepare s1 from @stmt;
   execute s1;
   drop prepare s1;
  end if;
 end while;
 -- Close cursor.
 close cur1;
 -- Free variable from memory.
 set @stmt = NULL;
END$$
DELIMITER ;

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-9287-1.html
网站维护教程更新时间:2012-03-20 17:17:31  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer