mysql分表查询的简单例子

发布时间:2019-12-17编辑:脚本学堂
分享一个mysql分表查询的小例子,用于减小大数量时的排队问题,以加快插入和查询的速度,有需要的朋友参考下。

本节内容:
mysql分表查询

mysql 分表是为了加快插入和查询的速度,分表之后,查询和插入操作会分配到多个表,即使有排队,队列的长度就会小很多。

创建一个mysql 存储过程,建立 100 个表 ,具有相同的结构:
 

复制代码 代码示例:
create procedure test()
begin
declare a int;
set a = 99;
while a >= 0 do
set @a = concat('create table urls_',a,'(`idx` int(11) NOT NULL AUTO_INCREMENT,`url_crc` char(10) NOT NULL,`url` varchar(100) NOT NULL,`title` varchar(500) DEFAULT '',`server` varchar(100) DEFAULT '',PRIMARY KEY (`idx`)) ENGINE=innodb DEFAULT CHARSET=ucs2');
prepare stmt from @a;
execute stmt;
set a = a-1;
end while;
end
//

然后插入时,根据数据的 crc32() 值 对 100 取余 来确定要插到哪一张表里。
查询时,可以将这些表都 union 起来查询。

创建存储过程:
 

复制代码 代码示例:
-- 查询所有的记录
create procedure test() 
begin 
declare a int; 
set a = 99;
set @a='';
while a >= 0 do 
set @a = concat(@a,'select * from urls_',a,' union ');
set a = a-1; 
end while; 
set @a = substring(@a,1,length(@a)-length(' union '));
select @a;
prepare stmt from @a;
execute stmt; 
end
//