首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种多数据库快速查询的方法

一种多数据库快速查询的方法
EN

Stack Overflow用户
提问于 2017-10-12 14:01:53
回答 2查看 369关注 0票数 0

我有两个相同的数据库db1,表名分别为product1和db2,表名分别为product2。两个表的列分别表示id、name、price。

我将价格低于500的产品存储在db1 product1表中,将价格高于500的产品存储在db2 product2表中。

现在,我需要组合两个数据库的结果,并按名称对其进行排序。我在MYSQL中使用了以下SQL查询。

代码语言:javascript
复制
   SELECT * FROM (SELECT id,name,price from db1.product1
                  UNION ALL  
                  SELECT id,name,price from db2.product2) AS DATA 
   ORDER BY DATA.name LIMIT 18

对于我来说,它工作得很好,只是花了比预期更多的时间。

有没有其他最快的方法来完成这项工作?

感谢您抽出宝贵的时间。

EN

回答 2

Stack Overflow用户

发布于 2017-10-12 14:05:25

有没有其他更快的方法来完成这项工作?

通常不要这样做。将所有内容放入一个设计良好的数据库中。有些情况需要特殊处理,但单一数据库是最好的开始方法。

如果您完全确定存在性能问题,可以查看分区。即便如此,作为一种管理工具,它通常比一般的性能工具更有用,尽管它会有特定的好处。

我们中的大多数人都不会处理需要双数据库才能获得性能的数据。我会首先专注于创建一个正确的单实例。(即单DB、单表)

具体地说,按照以下方式构建查询可能会提高性能

代码语言:javascript
复制
SELECT * FROM (
select * from (SELECT id,name,price from db1.product1    ORDER BY DATA.name LIMIT 18) as X
UNION ALL  
select * from (SELECT id,name,price from db2.product2    ORDER BY DATA.name LIMIT 18) as Y 
) AS DATA 
   ORDER BY DATA.name LIMIT 18

这样,您只要求每个DB的最小值。

票数 1
EN

Stack Overflow用户

发布于 2017-10-12 14:08:32

您可以多次调用mysql_connect(),但如果参数相同,则需要为'$new_link‘(第四个)参数传递true,否则将重用相同的连接。例如:

代码语言:javascript
复制
$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

然后查询数据库1,传递第一个链接标识符:

代码语言:javascript
复制
mysql_query('select * from tablename', $dbh1);

对于数据库2,传递第二个:

代码语言:javascript
复制
mysql_query('select * from tablename', $dbh2);

其他选项

如果MySQL用户有权访问这两个数据库,并且它们位于同一主机上(即可以从同一连接访问这两个数据库),则您可以:

  1. 保持一个连接打开,并根据需要调用mysql_select_db()进行交换。我不确定这是一个干净的解决方案,当您在查询中引用表时(例如,SELECT * FROM database2.tablename),您可能最终会查询错误的数据库名称( database.
  2. Specify )。这很可能是一种痛苦的实现。

此外,请阅读troelskn的答案,因为如果您能够使用PDO而不是较旧的扩展,这是一种更好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46702454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档