MySQL分页来自多个表的项目

时间:2015-02-02 10:45:09

标签: mysql database pagination sphinx

有一个页面包含来自不同MySQL表格(新闻,文章,视频,音频......)的不同项目,绑定到某个标签(例如"经济学")。

此刻,从每个表中获取100个绑定到标签的行,然后对其进行分组和排序。

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

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

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

1 个答案:

答案 0 :(得分:2)

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

如果您想使用标记"摇滚"搜索所有音频,您只需按"标记"进行过滤。和" source_type"领域。 Sphinx比MySQL更快,特别是如果你有非常大量的数据。 Sphinx将只返回一堆已创建的行(它取决于sphinx配置中的max_results)。

与此同时,狮身人面像很容易让你快速计算所有比赛。在对Sphinx的查询中使用LIMIT和OFFSET可以进行分页。

以这种方式,您可以从Sphinx中获取MySQL数据库中的ID对象,然后从MySQL中获取所有必需的数据。

我在同样的情况下使用了这种情况。它提供了很高的效率。