SELECT和connectionURL中的数据库名称不同,这有关系吗



我们有一个自定义的Java代码,可以连接到MySQL(8.0.23-14(。开发人员使用一个数据库连接来触发多个查询,但没有太多的并行加载。但对于JDBConnection,它们的URL是jdbc:mysql://HOST:3306/DBNAME,而SELECT查询也使用相同的连接对象(如FROM DBNAME1.TablenameFROM DBNAME2.TableName2等(在不同的数据库上运行。我们只是得到了很好的响应,但当我注意到MySQL Server上的进程时,我看到它们显然是在初始连接中使用的主数据库上创建的。这是否会以任何方式影响数据库/查询响应的性能?是否建议对不同的数据库特定查询使用不同的Connection对象,以便SELECT使用的数据库始终与连接中使用的数据库匹配?在这种情况下,如何处理具有多个数据库的查询?请告知。

USE db1;    -- or whatever is specified by the "connection"
SELECT ... FROM db2.tbl ...;

db2规则执行查询。CCD_ 6中的CCD_。否";冲击";。

你有相反的证据吗?

也许,只是,存在存储过程的排序规则、连接的排序规则和正在访问的表的排序规则不一致的模糊情况。如果是这样的话,那么您可能应该使它们保持一致,而不考虑DATABASE

USE的主要目的是指定在未另行说明的情况下使用哪个DATABASE(如FROM db2.tbl(。数据库主要是一种简单化的工具,用于组织TABLEs和存储过程以及其他一些东西。

连接到一个数据库,然后修改其他数据库中的表是完全可以的。需要注意的一件事是对各种dbs的GRANT权限。出于安全原因,对于管理员以外的任何人来说,GRANT ALL ON *.*通常都不明智。GRANT一个用户可以完全(或部分(访问数据库的子集;这似乎就是你的情况。

最新更新