MySQL + Sphinxを使用して、数百万行のデータを保存しています。データベースからのすべての情報を表示するためのWebサイトがあります。
たとえば、映画のタイトル(1億行)。私はそれらすべてを私たちのウェブサイトで見る必要があります。1ページあたり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で並べ替えることはできません。他のテーブルの情報でタイトルを並べ替える必要があります。
何百万もの行にアクセスし、並べ替えてすばやく実行するための最良の方法は何ですか。助けてください。
更新:スフィンクスソースから:/src/searchd.cpp
if ( iMax<0 || iMax>10000000 )
{
sphWarning ( "max_matches=%d out of bounds; using default 1000", iMax );
} else
{
g_iMaxMatches = iMax;
}
10000000は限界ですか?それ以上のオフセットを取得するにはどうすればよいですか?