我们有一个自定义的Java代码,可以连接到MySQL(8.0.23-14(。开发人员使用一个数据库连接来触发多个查询,但没有太多的并行加载。但对于JDBConnection,它们的URL是jdbc:mysql://HOST:3306/DBNAME
,而SELECT查询也使用相同的连接对象(如FROM DBNAME1.Tablename
、FROM 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
一个用户可以完全(或部分(访问数据库的子集;这似乎就是你的情况。