MySQL的跨库join

MySQL跨库多表联查(不同库之间进行表关联) MySQL跨库联查(不同库之间进行表关联) mysql支持多个库中不同表的关联查询,你可以随便链接一个数据库 然后,sql语句为: select * from db1.table1 left join db2.table2on db1.table1.id = db2.table2.id 只要用数据库名加上"."就能调用相应数据库的数据表了. 数据库名.表名 自己遇到的一个跨库聚合求差集的场景 SELECT COUNT(1) FROM analytics_graph_data.HORGSh. 阅读详情

功能需求

首先要理解原始需求是什么,为什么要跨库join。举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid;而用户的详细信息放在主库main_db,里面有用户的详细信息表user_info,如用户名、登录时间、注册时间、会员等级 等等。如果只是按用户名查找充值记录,那可以很简单地分两次查询即可。但是更复杂的需求,比如按注册时间排序,按会员等级统计等等,稍微复杂一点的功能,分次查询就相当难以做到了。如果在同一个库里,我们可以很方便的使用join关键字实现这些功能,但是在不同的数据库里,并没有跨库查询的SQL JOIN语句。那怎么办呢?

方案一: 字段冗余

也就是说把一部分信息重复存放,比如 pay_log表里除了userid字段还有user_name字段,等等。但是这只适合加少量字段,如果把注册、登录时间、等级等等都字段都重复一遍,那是显然不科学的。

方案二: 表复制和同步

也就是说把main_db里面的user_info表复制一份到log_db中,然后设置定时任务让这两个表进行同步。这样确实是可以在一个库里,然后可以进行 JOIN 等的复杂语句操作了。但是这两个表的内容是重复的,未免会比较浪费空间。

方案三: 链接表

什么是链接表呢?简单来说,就是在log_db里有一个user_info表,但这个表并没有存储数据,而是直接链接到了 main_db里的user_info表。这样的话,我们可以既无需定期同步,又可以像在同一个库里使用JOIN等操作。


开启 FEDERATED 引擎

以MySQL为例,链接表与常见的 MyISAM, InnoDB 等等,都是一种表的结构类型(称之为 存储引擎)。使用 show engines; 命令即可看到数据库所支持的存储引擎,默认 FEDERATED 引擎 是关闭的,我们需要去mysql配置文件开启它。

实现数据库的跨库join

开启的方法很简单,在windows下只需要在mysql的配置文件 my.ini 最末尾加上一句 federated ,然后重启mysql即可。重启后输入 show engines;命令即可看到 FEDERATED 的 Support 变为 YES,表示federated引擎已经开启。


新建链接表(federated引擎的表)

既然是链接的表,那么会有以下几个限制:

  • 本地的表结构必须与远程的完全一样
  • 远程数据库目前仅限MySQL
  • 不支持事务
  • 不支持表结构修改

建表的语句如下

CREATE TABLE xxx(...) ENGINE=FEDERATED CONNECTION='mysql://[name]:[pass]@[location]:[port]/[db-name]/[table-name]'

当然不建议这样自己手工从头拼装SQL语句,可以把mian_db的user_info表的结构导出来,然后修改最后的半句,再导进去就行啦。建表语句示例如下:

CREATE
 TABLE `user_info` (
  `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `username` varchar(60) NOT NULL DEFAULT '' COMMENT '帐号',
  `level` int(11) NOT NULL DEFAULT '1' COMMENT '等级',
  `log_dt` timestamp NOT NULL DEFAULT '2016-11-30 00:00:00' COMMENT 
'最后登录时间',
  `reg_dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
  PRIMARY KEY (`userid`),
  KEY `idx_name` (`username`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT 
CONNECTION='mysql://batsing:b8a7t4@localhost:3306/main_db/user_info'  
COMMENT='用户基本信息表-链接表';

经过这些步骤,我们就把另外一个库的表,链接到了我们操作的库上了。这样就可以使用JOIN等语句,间接进行跨库操作啦

MySQL实现跨库join查询 CONNECTION选项中的连接字符串的一般形式如下:scheme://user_name[:password]@host_name[:port_num]/db_name/tbl_name。注意:本地创建的表名必须在远程服务器存在,创建的字段也必须是远程表中的字段,可以比远程表的字段少,但是不能多,本地存储引擎选择:ENGINE =FEDERATED,配置密码作为纯文本的话会存在安全问题,运行show create table,show table status是可以见的。 阅读详情

相关推荐

Mycat与Mysql跨库JOIN与性能测试

Mycat与Mysql跨库JOIN与性能测试

实现数据库的跨库join

功能需求 首先要理解原始需求是什么,为什么要跨库join。举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid;而用户的详细信息放在主库main_db,里面有用户的详细信息表user_info,如用户名、登录时间、注册时间、会员等级 等等。如果只是按用户名查找充值记录,那可以很简单地分两次查询即可。但是更复杂的需求,比如按注册时间排序,按会员...

weixin_34224941的博客 824

AI Agent辅助企业财务分析与预测

企业财务分析与预测是企业管理中至关重要的环节,准确的财务分析与预测能够帮助企业管理者做出明智的决策,合理规划资源,降低风险。然而,传统的财务分析与预测方法往往依赖于人工经验和简单的统计模型,存在效率低、准确性差等问题。随着人工智能技术的飞速发展,AI Agent作为一种智能的软件实体,能够自主地感知环境、做出决策并采取行动,为企业财务分析与预测带来了新的解决方案。

AI天才研究院 921

MySQL跨库JOIN查询的常用方法有哪些?

摘要:本文介绍了MySQL跨库JOIN查询的常用方法,包括子查询连接和JOIN语句应用(INNER JOIN、LEFT JOIN等),并提出了索引优化、JOIN类型选择等性能提升策略。同时强调了建立正确索引、注意数据完整性等注意事项,帮助开发者高效处理跨库数据连接,提升数据库应用性能。

2501_90410679的博客 104

html python mysql交互_干货!Python与MySQL数据库的交互实战

安装PyMySQL库如果你想要使用python操作MySQL数据库,就必须先要安装pymysql库,这个库的安装很简单,直接使用pip install pymysql;假如这种方式还是安装不上,就用如下链接找一个合适的安装包,进行安装,这个就不细说了。https://www.lfd.uci.edu/~gohlke/pythonlibs/使用Python连接MySQL数据库1)六个常用的连接参数参数...

weixin_31043555的博客 1561

染色体外环状DNA:肿瘤研究新方向

染色体外环状DNA(ecDNA)是癌症中活化原癌基因扩增的主要方式。区别于常染色体,这类生物大分子主要以环状的形式存在于细胞核当中,长度分布在103-106数量级,无中心粒。ecDNA序列中包含一个或者多个基因与调控元件,结构开放,转录活性强,相比于在棒状染色体结构基因,ecDNA的生物功能活性更强。癌症中,成环的基因区域拷贝数往往增高,而超过一半的高拷贝数事件是ecDNA驱动生成。...

blackjimmy的博客 765

MySQL跨库JOIN查询的索引优化技巧是什么?

本文探讨MySQL跨库JOIN查询的索引优化技巧。首先分析跨库JOIN查询的特点,提出6项优化措施:选择合适索引类型、优化JOIN条件、创建覆盖索引、定期维护索引、应用分区技术以及使用监控工具。通过电商数据仓库实例说明如何实施这些优化策略,包括创建复合索引、优化查询条件等。文章强调索引优化是提升跨库JOIN性能的关键,建议根据实际场景选择合适的优化方法。

2501_90410679的博客 154

STM32CubeMX安装避坑指南:为什么你的Java环境总是报错?

本文针对STM32CubeMX安装过程中最常见的Java环境报错问题,提供了一套完整的诊断与解决方案。文章深入剖析了JRE版本冲突、环境变量配置错误、路径权限等核心原因,并给出了从系统级检查到手动修正环境变量的详细步骤,帮助开发者彻底解决安装难题,顺利开启STM32开发之旅。

prometheus9mon的博客 226

mysql跨库join_实现数据库的跨库join

功能需求首先要理解原始需求是什么,为什么要跨库join。举个简单的例子,在日志数据库log_db有一份充值记录表pay_log,里面的用户信息只有一个userid;而用户的详细信息放在主库main_db,里面有用户的详细信息表user_info,如用户名、登录时间、注册时间、会员等级 等等。如果只是按用户名查找充值记录,那可以很简单地分两次查询即可。但是更复杂的需求,比如按注册时间排序,按会员等级...

weixin_32821811的博客 1066

NPU、CPU和GPU

NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。

m0_60697583的博客 1755

LSTM预测股票数据---数据预处理

# 导入相应的模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt import tensorflow as tf # 获取训练集 def get_train_data(data,batch_size = 60 ,time_step = 20,train_begin = 0,train_end = 58...

qq_35358021的博客 3360

mysql join 从库_Mysql实现跨库join查询

mysql的跨库查询,我认为有两种情况,一是同一实例下的跨库查询,二是不同实例下的跨库查询,下面我们分别来说。1、同一实例下的跨库查询同一实例下的跨库查询,实现起来非常简单,直接在sql中的表前面加上schema的名称就行。SELECT * FROM 数据库名1.表名 JOIN 数据库名2.表名 ON 数据库名1.表名.tid = 数据库名2.表名.tid;2、不同实例下的跨库查询我们重点来说说不...

weixin_34892992的博客 1233

ThingsBoard教程(七):模拟设备遥测

前言 各位读者好,截止目前,ThingsBoard系列文章已经做了六篇,分别是 ThingsBoard教程(一):ThingBoard介绍及安装 ThingsBoard教程(二):租户,租户配置,部件组模块的使用 ThingsBoard教程(三):系统设置模块的使用 ThingsBoard教程(四):规则链简介与操作 ThingsBoard教程(五):客户,资产管理 ThingsBoard教程(六):设备管理 上一篇我们讲解了如何使用设备管理来对设备进行增删改查,和设备配置的一些基本概念,本篇文章就带大

知无涯 4577

【MySQL】跨库join

目标:数据库A中的表可以join数据库B中的表。 环境:Windows系统,免安装版mysql-5.7.22。 一、开启FEDERATED引擎 执行命令:SHOW ENGINES;,查看mysql数据库中Federated引擎是否开启。下图所示,为未开启。 修改mysql文件夹根目录的my.ini文件:新添加一行,内容为FEDERATED,如下图所示: 二、重启MySQL ...

习惯成自然 1万+

手把手教你学Simulink——基础电机控制场景实例:基于Simulink的永磁同步发电机温度场耦合仿真

摘要:本文详细介绍了基于Simulink的永磁同步发电机(PMSG)电-热耦合仿真方法。通过Simscape Electrical搭建含热端口的PMSG模型,结合集总参数热网络(LPTN)实现损耗计算与温度反馈,分析了过载工况下温升对电阻和永磁体性能的影响。仿真结果表明:150%过载20秒会导致绕组温升132°C,电阻增加42%,磁链衰减10.5%。文章还提供了自然冷却与强迫风冷的对比数据,并建议通过多物理场耦合仿真预防实机过热问题。该方法可有效支撑高功率密度电机热设计,避免永磁体退磁风险。

MHD0815的博客 250

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

MySQL跨库JOIN查询的性能优化策略是什么?

本文探讨了MySQL跨库JOIN查询的性能优化策略。首先分析了索引优化方法,包括合理选择索引列、建立复合索引及避免过度索引。其次提出查询优化建议,如优化SQL语句、减少数据传输和使用分区技术。此外还涉及硬件配置、数据库结构设计优化以及监控工具的应用。文章强调性能优化需要系统性考虑,建议企业通过实践积累经验,形成适合自身业务的优化方案。这些策略对提高高并发场景下的数据库性能具有重要指导意义。

searchboy2025的博客 60

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

left join 后数据变多_「转」Mysql数据库分库后跨库join解决方案

一、前言 近几个月项目中数据库开始分库了,把一个原本60多张表的数据库分成了6个部分,每个部分有自己业务之内的表,整个数据库只是物理分开,逻辑依然是链接的,通过mycat这个数据库中间件对整个数据库进行路由转发。但是分库后随之而来的问题之一就是跨库join,可以说网上的解决方案已经烂大街了。但是小编还是觉得有必要总结分析一下。二、数据库结构示例 为了公司数据保密,小编建立两个新的数据库,来做这个实...

weixin_39626690的博客 1429

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

MySQL分库分表后如何高效实现跨库JOIN?

本文探讨了MySQL分库分表后高效实现跨库JOIN的关键技术。重点分析了分库策略选择、JOIN操作优化(包括索引使用、条件优化和连接池技术)以及具体实现方法(数据迁移、分布式连接和查询优化)。同时强调了数据一致性、系统负载和性能监控的重要性,为提升分布式数据库查询性能提供了实用解决方案。

2501_90410679的博客 79

MySQL跨库JOIN查询的错误处理机制是怎样的?

本文介绍了MySQL跨库JOIN查询的错误处理机制,主要包括错误代码与提示信息、错误日志监控、异常处理与重试机制等核心内容。文章详细解读了常见错误代码,阐述了通过存储过程实现异常处理的方法,并提出了故障排查与日志分析的具体措施。同时,建议通过优化数据库设计、提高查询效率等预防措施来减少错误发生。最后强调在实际应用中应持续实践探索,以提升技术水平。

2501_90410679的博客 64

mysql跨库join_2020-07-07:mysql如何实现跨库join查询?

福哥答案2020-07-07:1.同服务跨库。表名称带上库名。SELECT * FROM 数据库名称1.表名称 JOIN 数据库名称2.表名称 ON 数据库名称1.表名称.tid = 数据库名称2.表名称.tid2.不同服务跨库。使用federated引擎。在机器A上的数据库A中建一个表B。建表语句示例:CREATE TABLEtable_name(......) ENGINE =FEDERAT...

weixin_32916385的博客 309

MySQL跨库JOIN查询的事务处理机制是怎样的?

本文总结了MySQL跨库JOIN查询的事务处理机制。MySQL通过事务隔离性、锁机制和乐观并发控制确保数据一致性和查询性能。跨库JOIN事务流程包括准备、启动、执行、锁定资源和提交/回滚阶段。关键注意事项包括保障事务隔离性、监控性能、处理并发问题和优化SQL语句。这些机制共同保障了MySQL在复杂查询场景下的数据一致性和系统可靠性。

searchboy2025的博客 42

MySQL跨库JOIN查询的内存管理要点有哪些?

本文重点探讨了MySQL跨库JOIN查询的内存管理优化策略。文章指出,高效的内存管理对提升查询性能、降低资源消耗至关重要。主要优化要点包括:合理设计索引结构、充分利用缓存机制、实时监控内存使用、优化JOIN操作逻辑、采用分区技术处理大数据集,以及定期进行数据库维护。这些措施能有效提升查询效率,保证系统稳定性,为数据库管理员提供实用的性能优化方案。

2501_90410679的博客 45

应用缓存技术优化MySQL跨库JOIN性能的方法?

本文探讨了应用缓存技术优化MySQL跨库JOIN性能的方法。通过分析缓存策略设计(包括策略选择、数据存储管理)、实现方式(内存缓存和分布式缓存)以及JOIN操作优化(逻辑优化和并行处理)等技术手段,系统性地提出了性能优化方案。文章还强调了监控调优和定期维护的重要性,并指出随着技术发展,缓存技术将为数据库性能优化提供更成熟的解决方案。这些方法可有效减少数据库查询压力,提升跨库JOIN操作性能。

searchboy2025的博客 32

使用MySQL中间件实现跨库JOIN的原理是什么?

本文探讨了使用MySQL中间件实现跨库JOIN的技术原理及优势。首先介绍了跨库JOIN的基本概念和MySQL中间件的作用,随后详细阐述了数据模型设计、中间件技术原理和查询优化机制。重点分析了该方案的四大优势:提升操作效率、降低数据传输复杂度、强适应性和高安全性。最后通过电商、金融等行业的应用案例,验证了该技术在处理大数据量跨库连接时的有效性。文章指出,合理选择中间件解决方案能显著提升系统性能和扩展性。

2501_90410679的博客 78

MySQL跨库JOIN查询的权限管理要点有哪些?

摘要:本文探讨了MySQL跨库JOIN查询的权限管理要点。在分析背景知识后,重点阐述了权限管理的五个关键方面:权限分类与角色管理、权限验证与审计、权限策略与最佳实践、连接池与连接管理、监控与告警机制。文章强调通过合理的权限管理措施,能有效保障数据库安全,并指出需根据业务发展持续优化权限策略。这些内容为企业在分布式环境中安全实施跨库JOIN查询提供了实用指导。

searchboy2025的博客 44
上一篇: Redis Cluster介绍
下一篇: Redis缓存与数据库一致性方案
奋起直追CDS
博客等级 码龄11年 57粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值