不讲概念,讲实操,mysql 分表模糊查询、分页查询 及 merge 表的使用

news2024/10/12 20:27:08

1.Mysql merge合并表的要求

  • 1.合并的分表必须是 MyISAM 引擎,MyISAN引擎是不支持事务的。
  • 2.Merge表只保证合表后数据唯一性,合表前的数据可能会存在重复。
  • 3.表的结构必须一致,包括索引、字段类型、引擎和字符集。
  • 4.删除 tb_member1 分表正确的做法是
ALTER TABLE `tb_member_all` UNION (tb_member1);
DROP TABLE IF EXISTS `tb_member1`;

如果直接删除tb_member1,tb_member2表会报错。

  • 5.不能自动分表,需要定期维护。

2.创建2个分表(Navcat中运行查询)

DROP TABLE IF EXISTS `tb_member1`;
CREATE TABLE `tb_member1`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) NOT NULL COMMENT '名称',
  `code` varchar(100) NOT NULL COMMENT '标识',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '分表1';

DROP TABLE IF EXISTS `tb_member2`;
CREATE TABLE `tb_member2`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) NOT NULL COMMENT '名称',
  `code` varchar(100) NOT NULL COMMENT '标识',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '分表2';

3.创建1个主表壳(Navcat中运行查询)

DROP TABLE IF EXISTS `tb_member_all`;
CREATE TABLE `tb_member_all`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) NOT NULL COMMENT '名称',
  `code` varchar(100) NOT NULL COMMENT '标识',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MERGE UNION=(tb_member1,tb_member2) INSERT_METHOD=LAST CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '总表';

最后我们得到3张表:tb_member1(分表),tb_member2(分表),tb_member_all(总表)

4. 分别向 tb_member1(分表),tb_member2(分表) 插入数据

INSERT INTO `sysab`.`tb_member1`(`id`, `name`, `code`) VALUES (1, '1', '1');
INSERT INTO `sysab`.`tb_member1`(`id`, `name`, `code`) VALUES (2, '11', '11');
INSERT INTO `sysab`.`tb_member1`(`id`, `name`, `code`) VALUES (3, '111', '111');

INSERT INTO `sysab`.`tb_member2`(`id`, `name`, `code`) VALUES (1, '2', '2');
INSERT INTO `sysab`.`tb_member2`(`id`, `name`, `code`) VALUES (2, '22', '22');
INSERT INTO `sysab`.`tb_member2`(`id`, `name`, `code`) VALUES (3, '222', '222');

在这里插入图片描述

5. 查询 tb_member_all(总表) 的数据是这样子的

注意:我们并没有向 tb_member_all(总表) 表插入任何数据。

在这里插入图片描述
在这里插入图片描述
上面查询的结果中,id字段值(3,2,1,2,1,3) 有重复好像不太理想,可以在分表插入数据时使用雪花ID,这样总表查询出来的id就是唯一了。

6. 对这个 tb_member_all(总表) 进行模糊查询、分页查询

7. 自动分表,在总表 tb_member_all(总表) 中创建存储过程

未测试,自行研究

drop PROCEDURE if EXISTS createtb;
create PROCEDURE createtb()
BEGIN
	DECLARE tname VARCHAR (255);
	DECLARE i INT DEFAULT 1;
	DECLARE uniontb VARCHAR (255) DEFAULT '';
	
	SET tname = CONCAT('t', nextval('tb_member_all'));
	set @sqlstr = CONCAT('create table ',tname,' like t1');
	prepare stmt from @sqlstr;
	EXECUTE stmt;
	deallocate prepare stmt;
	
	WHILE i <= currval ('tb_member_all') DO
		SET uniontb = CONCAT(uniontb, CONCAT('t', i), ',');
		SET i = i + 1;
	END WHILE;

	set uniontb = LEFT(uniontb,LENGTH(uniontb) - 1);
	set @sqlstr = CONCAT('ALTER TABLE tb_member_all ENGINE = MERGE UNION = (',uniontb,') INSERT_METHOD = LAST');
	prepare stmt from @sqlstr;
	EXECUTE stmt;
	deallocate prepare stmt;
end
-- 创建事件
CREATE EVENT test_event
    ON SCHEDULE 
        EVERY 1 DAY
    STARTS date_add(date(curdate() + 1),interval 3 hour)
    DO call createtb; 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1567235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

原理图设计的通用规范

原理图各页内容依次为&#xff1a;封面、目录、电源、时钟、CPU、存储器、逻辑、背板&#xff08;母板&#xff09;接口等。 原理图上所有的文字方向应该统一&#xff0c;文字的上方应该朝向原理图的上方&#xff08;正放文字&#xff09;或左方&#xff08;侧放文字&#xff…

Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10)

原文&#xff1a;Whisper对于中文语音识别与转写中文文本优化的实践(Python3.10) - 知乎 阿里的FunAsr对Whisper中文领域的转写能力造成了一定的挑战&#xff0c;但实际上&#xff0c;Whisper的使用者完全可以针对中文的语音做一些优化的措施&#xff0c;换句话说&#xff0c;…

【LeetCode热题100】51. N 皇后(回溯)

一.题目要求 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方…

hadoop:案例:将顾客在京东、淘宝、多点三家平台的消费金额汇总,然后先按京东消费额排序,再按淘宝消费额排序

一、原始消费数据buy.txt zhangsan 5676 2765 887 lisi 6754 3234 1232 wangwu 3214 6654 388 lisi 1123 4534 2121 zhangsan 982 3421 5566 zhangsan 1219 36 45二、实现思路&#xff1a;先通过一个MapReduce将顾客的消费金额进行汇总&#xff0c;再通过一个MapReduce来根据金…

RocketMQ是什么?

文章目录 一、RocketMQ是什么&#xff1f;二、RocketMQ 应用场景三、RocketMQ 优缺点1.优点2、缺点 一、RocketMQ是什么&#xff1f; RocketMQ 是一款纯 java、分布式、队列模型的消息中间件&#xff0c;支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。 二、Rocke…

java数据结构与算法刷题-----LeetCode417. 太平洋大西洋水流问题

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 深度优先遍历 深度优先遍历 解题思路&#xff1a;时间复杂度O( …

DIY蓝牙键盘(1) - 理解 键盘报文(免费)

DIY蓝牙键盘(1) - 理解键盘报文 1. 键盘报文体验 一个键盘对于用户的体验是&#xff0c;用户按按键A他能看到字母A会在主机上显示出来。那这是如何实现的&#xff1f; 其实很简单&#xff0c;只要键盘发送下面的两个报文给主机&#xff0c;字母A就能在主机上显示出来。 (1)…

【Qt】Ubuntu20.04.6+Qt5.15.2+QtCreator10.0.1无法输入中文

1、前提条件 1)已经安装了fcitx sudo apt install fcitx sudo apt install fcitx-pinyin sudo apt install fcitx-bin fcitx-table-all sudo apt install fcitx-qt52)系统已经配置fcitx 3)将系统下 /usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitx…

CSS3新增的语法(三)【2D,3D,过渡,动画】

CSS3新增的语法&#xff08;三&#xff09;【2D,3D,过渡&#xff0c;动画】 10.2D变换10.1. 2D位移10.2. 2D缩放10.3. 2D旋转10.4. 2D扭曲&#xff08;了解&#xff09;10.5. 多重变换10.6. 变换原点 11. 3D变换11.1. 开启3D空间11.2. 设置景深11.3. 透视点位置11.4. 3D 位移11…

java数据结构与算法刷题-----LeetCode79. 单词搜索

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 回溯深度优先遍历 回溯深度优先遍历 解题思路&#xff1a;时间复…

Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能

Vue 大文件切片上传实现指南 背景 在Web开发中&#xff0c;文件上传是一个常见的功能需求&#xff0c;尤其是当涉及到大文件上传时&#xff0c;为了提高上传的稳定性和效率&#xff0c;文件切片上传技术便显得尤为重要。通过将大文件切分成多个小块&#xff08;切片&#xff0…

Rust线程间通信通讯channel的理解和使用

Channel允许在Rust中创建一个消息传递渠道&#xff0c;它返回一个元组结构体&#xff0c;其中包含发送和接收端。发送端用于向通道发送数据&#xff0c;而接收端则用于从通道接收数据。不能使用可变变量的方式&#xff0c;线程外面修改了可变变量的值&#xff0c;线程里面是拿不…

UE5启用SteamOS流程

一、安装OnlineSubsystemSteam插件 1、在UE里安装OnlineSubsystemSteam 2、设置默认开始地图 3、设置DefaultEngine.ini文件&#xff1a; 打开项目根目录/Config/DefaultEngine.ini文件 打开官网的配置说明 复制并粘贴到该文件中 4、设置运行模式 5、测试 确保Steam平台已…

云原生:应用敏捷,华为视角下的应用现代化

Gartner 也提出&#xff0c;到 2023 年&#xff0c;新应用新服务的数量将达到 5 亿&#xff0c;也即是说&#xff1a;“每个企业都正在成为软件企业”。据IDC 预测&#xff0c;到 2025 年三分之二的企业将成为多产的“软件企业”&#xff0c;每天都会发布软件版本。越来越多的企…

【HTML】简单制作一个动态3D正方体

目录 前言 开始 HTML部分 JS部分 CSS部分 效果图 总结 前言 无需多言&#xff0c;本文将详细介绍一段代码&#xff0c;具体内容如下&#xff1a; 开始 首先新建文件夹&#xff0c;创建两个文本文档&#xff0c;其中HTML的文件名改为[index.html]&#xff0c;JS的文件名改…

基于Python深度学习的中文情感分析系统(V2.0)

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

v3-admin-vite 改造自动路由,view页面自解释Meta

需求 v3-admin-vite是一款不错的后端管理模板&#xff0c;主要是pany一直都在维护&#xff0c;最近将后台管理也进行了升级&#xff0c;顺便完成一直没时间解决的小痛痒&#xff1a; 在不使用后端动态管理的情况下。我不希望单独维护一份路由定义&#xff0c;我希望页面是自解…

STM32的定时器中断Cubemx

STM32的定时器中断Cubemx 0.定时器简介1.配置时钟2.配置定时器3.创建工程4.补充源码 0.定时器简介 基本定时器功能&#xff1a; 16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器&#xff0c;计数器时钟频率的分频系数为1&#xff5e;65535之间的任意…

BGP-(as-path-filter)

BGP-as-path-filter&#xff0c;缺省 as-path-filter&#xff0c;正则表达式&#xff0c;as-path过滤器&#xff0c;对于BGP的as-path属性实际上可以看成是一个包含空格的字符串。 特点&#xff1a;1、通过对BGP路由的as-path属性进行匹配达到对BGP路由的过滤。 2、在route-…

Vue组件封装重要知识点

一、什么是组件&#xff1f; Vue.js的一个核心思想是组件化。所谓组件化&#xff0c;就是把页面拆分成多个组件&#xff0c;每个组件依赖的CSS、JavaScript、模板、图片等资源放在一起开发和维护。组件是资源独立的&#xff0c;组件在系统内部可复用&#xff0c;组件和组件之间…