【发布时间】:2012-09-13 11:59:13
【问题描述】:
我有一个带有两个索引的 Sphinx 实例:main 和 delta。增量索引正在选择上次合并后修改的文档。这包括具有新 ID 的文档和具有现有 ID 的文档。
我按照常用方法创建了一个范围查询(文档中的最小和最大 ID 以及 1000 条记录的步骤)。这种方法的问题在于,在具有 1M 文档的数据库中,将有大量查询不返回任何内容,因为范围查询涵盖了整个 id 范围。 即:
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 的范围缩短,执行的查询更少)
【问题讨论】: