我使用 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 是限制吗?我怎样才能获得更多的抵消?
答案 0 :(得分:3)
如果您的排序顺序基于属性(演员受欢迎程度) - 而不是狮身人面像计算的重量 - 那么可以只使用游标。
因为可以按此属性进行过滤。
如果你真的需要它,我不得不想知道。每页100个项目,max_matches为1M,表示10,000页结果。您的访问者是否真的会阅读10,000页的结果?答案 1 :(得分:1)
使用LIMIT
(select api)检索特定页面。
您想要订购的任何东西都需要包含在索引中,您不能在这里使用连接。