0

我的主要存储是 MySQL,但我必须使用远程 MSSQL Server,其中存储了书名和 ID。我对该远程 MSSQL Server 具有只读访问权限。所有其他数据(书籍作者、年份、描述等)都存储在我的本地 MySQL 数据库中。我无法在本地 MySQL 中存储标题(这是协议条件)。我的 PHP 框架允许为这些书籍添加描述和许多其他数据——所有数据都存储在 MySQL 中。

总的来说,我可以开发这个框架,但我有一个弱点。在这种情况下,我需要有关如何组织搜索的专业建议。因为我使用了 2 个不同的数据库,所以我不能使用简单的连接或其他任何东西。当然,我可以进行两步搜索:1)获取标题,2)获取其他内容,然后在 PHP 中形成结果。但恐怕它会很慢。有没有办法以某种方式从 MySQL 临时表中的 MSSQL 中选择标题?或者我可能会错过一些用于此类数据库合作的好技术?任何想法都非常感谢!

4

1 回答 1

2

MySQL 对 MSSQL 一无所知,因此您无法跨两种不同类型的数据库服务器连接。但是,您的结构对于您所描述的而言确实还不错。在我看来,您有三种可能的搜索方案 1)仅搜索标题 2)搜索标题和其他信息,3)仅搜索其他信息。你的问题是在案例 2 中,案例 1 和 3 都很简单。

正如你所提到的,我处理它的方式是一个两步过程,有点像这样:

1) 获取搜索查询

2) 获取任何可能匹配的标题的 MSSQL 结果

3) a) 将标题结果写入临时表或 b) 存储在内存结构中(取决于您用于搜索结果评分的内容 - 如果使用 MySQL 全文搜索,则需要写入临时表)

4a) 如果标题在临时表中,则对连接表执行搜索

4b)如果标题在内存中,则搜索其他书籍信息并根据需要在内存中加入数据。

由于不能在本地存储标题的限制,无论如何您都会遇到一些性能问题,但最大限度地减少查询数量会有所帮助。

PS你的协议到底说了什么?您可以将书名存储在内存中吗?或者您是否总是需要对远程服务器执行查询?如果您可以将它们存储在内存中,也许您可​​以查询 MSSQL 数据库并将标题放入 MySQL 内存表(http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html ),当服务器关闭时它会从内存中消失。

于 2013-01-29T19:20:21.150 回答