MySQL分表后,如何做分页查询?
阅读本文大概需要 2.8 分钟。
来自:blog.csdn.net/joy_tom/article/details/109857573
DROP table IF EXISTS tb_member1;
create table tb_member1(
id bigint primary key auto_increment ,
name varchar(20),
age tinyint not null default '0'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
DROP table IF EXISTS tb_member2;
create table tb_member2(
id bigint primary key auto_increment ,
name varchar(20),
age tinyint not null default '0'
)ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
insert into tb_member1(id,name,sex) select id,name,sex from dd_user where id%2=0;
insert into tb_member2(id,name,sex) select id,name,sex from dd_user where id%2=1;
DROP table IF EXISTS tb_member_all;
create table tb_member_all(
id bigint primary key auto_increment ,
name varchar(20),
age tinyint not null default '0'
)ENGINE=MERGE UNION=(tb_member1,tb_member2) INSERT_METHOD=LAST CHARSET=utf8 AUTO_INCREMENT=1 ;
ERROR 1168 (HY000): Unable to open underlying table which is differently defined
or of non-MyISAM type or doesn't exist
查看上面的分表数据库引擎是不是MyISAM. 查看分表与指标的字段定义是否一致。
member1
或者member2
中创建数据member_all
表中也会出现同样的数据tb_member_all
表就是tb_member1
,tb_member2
的并集,刚刚实现到这里,我也没理解,后来看了一些文档,了解了一下:tb_member_all
表里面是没有存储数据,它就是一个外壳,里面的数据是tb_member1
,tb_member2
的并集,数据的存储是放在分表中;tb_member_all
,我们就可以实现数据查询的分页;id%2
这是取模处理,分配数据进入哪个数据;tb_member_all
表去做分页查询实现推荐阅读:
互联网初中高级大厂面试题(9个G) 内容包含Java基础、JavaWeb、MySQL性能优化、JVM、锁、百万并发、消息队列、高性能缓存、反射、Spring全家桶原理、微服务、Zookeeper......等技术栈!
⬇戳阅读原文领取! 朕已阅