java - 哪个更好? - 在 MySQL 中使用 DATABASE 与 DATABASE.TABLE_NAME

标签 java mysql database

我正在一个多个共享数据库环境(MySQL)中工作,我需要经常在多个数据库之间切换。

假设我的主数据库是 MainDB

此外,每个用户都有共享数据库,例如 ShardDB1、ShardDB2 ...

由于我使用的是JAVA连接池,因此我必须在执行每个查询时获取要执行的连接,并在执行完成后立即将其释放到池中。

我尝试了以下方法,但没有发现任何性能差异或任何问题。

  1. 每次我想使用SharedDB时,我都会切换到SharedDB,如USE ShardDB1;,并在再次执行查询后切换回MainDB,如USE MainDB; >

  2. 编写查询,例如“Select * from "+ ShardDB1 +".TABLE_NAME where ....”;

第二种方法对我来说更容易在代码中使用。但在将其投入生产之前,我想知道使用第二种方法是否存在任何问题(尤其是性能)。我用谷歌搜索,但找不到。请阐明这一点。

最佳答案

性能上没有真正的区别。在第一种情况下,服务器编辑请求,添加前缀本身。在第二个中,前缀是一个 java 变量。如果有差异,则约为 0.1 毫秒或更小。

USE DATABASE 语句是开发人员编写请求的快捷方式。 当处理多个数据库时,最好不要使用此语句,而应在表中添加数据库名称前缀。然后,如果您忘记在请求中指定名称,您就不会冒更改错误数据库的风险。

关于java - 哪个更好? - 在 MySQL 中使用 DATABASE 与 DATABASE.TABLE_NAME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541817/

相关文章:

java - 选择带逗号的字符串(正则表达式)

java - 如何获取从 Eclipse IDE 中的类调用的方法列表?

java - 如何在代码中获取eclipse根路径?

java - 字符串到带参数的新对象

node.js - 如何使用 Node.js net.Socket 像使用终端一样与 Postgresql 数据库通信

MySQL - 使用不存在的地方返回 null

mysql - 无法在 Codeigniter mysql 中对带有日期标题的行进行排序

php - EC2 Linux 实例 PHPInfo 不显示 mysql

android - GreenDao无法设置数据库

mysql - 如何在触发器中放置 IF 条件以计算列的值