1

我有一个带有两个索引的 Sphinx 实例:main 和 delta。增量索引正在选择上次合并后修改的文档。这包括具有新 ID 的文档和具有现有 ID 的文档。

我按照通用方法创建了一个范围查询(文档中的最小和最大 id 以及 1000 条记录的步骤)。这种方法的问题在于,在具有 1M 文档的数据库中,将有大量查询不返回任何内容,因为范围查询覆盖了整个 id 范围。IE:

sql_query_range = SELECT MIN(id),MAX(id) FROM documents
sql_range_step = 1000
sql_query = SELECT * FROM documents where modified_date > (select merge_date from SphinxTable)
WHERE id>=$start AND id<=$end

有什么方法可以定义我的 sql 范围查询,以便索引器只遍历修改过的记录而不是整个数据库?(并且由于 c 的范围缩短而执行较少的查询)

4

1 回答 1

2

正如我在回答您的其他问题时指出的那样,会做类似的事情

sql_query_range   = SELECT (SELECT maxID from SphinxTable),MAX(id) FROM documents
于 2012-09-13T16:51:01.470 回答