狮身人面像获得数百万的结果

时间:2012-11-01 03:24:43

标签: mysql performance sphinx

我使用 MySQL + Sphinx 来存储数百万行数据。我们有网站查看我们数据库中的所有信息。

例如,电影片段( 100,000,000 行)。我需要在我们的网站上查看所有这些内容,每页100个标题。此外,我需要按演员人气排序查看它们。

对于前10页,所有作品都很棒。但在那之后我达到max_matches限制。增加此限制将迫使sphinx使用更多的CPU / RAM。

另外,我甚至无法将max_matches设置为 20,000,000

  

警告:max_matches = 20000000越界;使用默认1000

我可以使用MySQL执行这样的查询:

SELECT * FROM titles WHERE tid >= $start AND tid <= $end

使用 tid 索引。但我无法通过 tid 对其进行排序。我需要通过其他表格中的信息对我的标题进行排序。

访问数百万行的最佳方法是什么,排序并快速完成。请帮忙。

更新:来自sphinx来源: /src/searchd.cpp

if ( iMax<0 || iMax>10000000 )
{
    sphWarning ( "max_matches=%d out of bounds; using default 1000", iMax );
} else
{
    g_iMaxMatches = iMax;
}

10000000 是限制吗?我怎样才能获得更多的抵消?

2 个答案:

答案 0 :(得分:3)

如果您的排序顺序基于属性(演员受欢迎程度) - 而不是狮身人面像计算的重量 - 那么可以只使用游标。

因为可以按此属性进行过滤。

http://sphinxsearch.com/forum/search.html?q=cursors&f=1

如果你真的需要它,我不得不想知道。每页100个项目,max_matches为1M,表示10,000页结果。您的访问者是否真的会阅读10,000页的结果?

答案 1 :(得分:1)

使用LIMITselect api)检索特定页面。

您想要订购的任何东西都需要包含在索引中,您不能在这里使用连接。