mysql 如何实现跨裤查询

Posted 鹤子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 如何实现跨裤查询相关的知识,希望对你有一定的参考价值。

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

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

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

 

使用 FEDERATED 引擎的代码,FEDERATED默认关闭,需求修改配置开启该引擎

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=\'用户基本信息表-链接表\';

  

原文:http://www.cnblogs.com/batsing/p/federated.html

以上是关于mysql 如何实现跨裤查询的主要内容,如果未能解决你的问题,请参考以下文章

你如何在 python 中处理 graphql 查询和片段?

部分代码片段

如何在片段中填充列表视图?

关于MySQL的关联查询

mysql查询Mybatis查询

如何使用 Mysql Joins 而不是嵌套子查询来实现相同的结果?