我有一个包含两百万条记录的MySQL数据库。我已经在使用sphinx为数据建立索引,然后快速搜索。
我有两个索引。一个大的索引每天凌晨3点轮换,另一个小的索引只保存增量更改。它每30分钟轮换一次,只索引数据库中的新行(那些在凌晨3点之后插入的行)。
一切都很好。搜索正在进行中。但我正在寻找一些改进。我不需要每天重新索引大型数据库,因为一旦信息插入到数据库中,它就不会改变(我只有插入,没有更新)。因此,重新构建大型索引是完全无用的。
是否可以将此索引拆分为按年甚至按月索引?这会加速还是会减慢搜索查询的速度?有没有关于如何组织索引和数据源的例子?如果我切换到实时索引会不会更好?
发布于 2012-12-02 05:07:38
您可以只使用合并功能
http://sphinxsearch.com/docs/current.html#index-merging
每天一次,把你的“增量”合并回“主干”。合并后马上要更新计数器表,因为main中的数据已经改变了,所以值也改变了。
(一般来说,索引越多,搜索受到的影响就越大。最终,搜索大量的小索引将花费比节省的更多的工作。-例外情况是,如果您只能搜索部分数据。例如,如果您的查询只搜索去年的记录,可以调整它,使其只搜索最新的索引。这比只搜索所有记录而丢弃许多记录更有效率。)
https://stackoverflow.com/questions/13661352
复制相似问题