MySQL 多个表格中项目的分页

MySQL pagination for items from multiple tables

有一个页面包含来自不同 MySQL table 的不同项目(新闻、文章、视频、音频...),绑定到特定标签(例如 "economics").

目前,从每个 table 中提取绑定到标签的 100 行,然后进行分组和排序。

我需要在页面中引入分页,这在这种情况下很痛苦,因为需要将所有项目收集在一起,以便从具有一定长度的偏移量中获取块。

我想我需要聚合一个数据源中每个 table 的项目,然后对其执行查询(按标签过滤)和排序(按日期)。

我可以用什么来达到这个目的?我考虑使用 Sphinx 搜索引擎,但我不确定在这种情况下它是否好 - 我只需要查询和排序,而不是全文搜索。

Sphinx 是非常适合您的情况的解决方案。您可以为所有类型的内容(新闻、文章、视频、音频)定义一个索引,只需添加显示来源 table 的字段 "source_type",例如 1 - 新闻,2 - 音频,3 -视频等。并添加您要用于过滤的所有字段。

如果您想搜索所有带标签 "rock" 的音频,您只需按 "tag" 和 "source_type" 字段进行过滤。 Sphinx 比 MySQL 快得多,尤其是当你有大量数据时。 Sphinx 将 return 你只有一堆已建立的行(这取决于 sphinx 配置中的 max_results)。

同时sphinx很容易return你算完所有比赛都非常快。在对 Sphinx 的查询中使用 LIMIT 和 OFFSET 可以进行分页。

通过这种方式,您可以从 Sphinx 获取 MySQL 数据库中的对象 ID,然后从 MySQL.

获取所有需要的数据

我在同样的情况下使用了那个场景。它提供了很高的效率。