天天看点

mysql增量索引_什么是mysql的增量索引?

今天给大家介绍下在MySQL中利用sphinx进行全文搜索,利用sphinx生成增量索引?那么是增量索引呢?

mysql增量索引_什么是mysql的增量索引?

一,增量索引

就个人理解增量索引到底是干什么的,怎么用?

简单解释一下,向一个数据表插入数据时,这些新插入的数据,就是增量了,sphinx是根据索引来查找数据的,如果索引没有更新,新增数据是查不出来的,所以我们要更新主索引,更新增量索引,增量条件的设定就比较重要了。我在网上看到一些增量索引的做法,并亲自尝试了一下,发现在一些问题:

mysql增量索引_什么是mysql的增量索引?
mysql增量索引_什么是mysql的增量索引?

二,问题

1,上面7行和20行这种写法,我个人尝试了一下,根本查不出增量数据,因为自身就是有矛盾的。

sql_query_pre=REPLACEINTOsph_counterSELECT1,MAX(id)FROMdocuments

将数据表中的最大的那个数据的ID放到记录增量条件的表中,并且这个条件很简单就是一个ID,如果我们插入一条数据,然后用

/usr/local/sphinx/bin/indexer--rotate--config/usr/local/sphinx/etc/sphinx.conftest1stemmed

更新索引。

SELECTdoc.*FROMdocumentsdocjoinsphinx1on(doc.id=sphinx1.id)wherequery='张;mode=any';

因为WHEREid>(SELECTmax_doc_idFROMsph_counterWHEREcounter_id=1),这里肯定是等于或者小于而不是大于

2,现在我把WHEREid>(SELECTmax_doc_idFROMsph_counterWHEREcounter_id=1)这里的大于改成等于,又出现了一个问题,如下操作:

mysql增量索引_什么是mysql的增量索引?

这里我一次插入了二条数据,但是增量条件中,只记录最后一个插入的数据,问题来了.

mysql增量索引_什么是mysql的增量索引?

更新增量索引,他只更新了最后一条,之前的那个条件,如果在没有更新主索引的情况下,就消失了。

三,解决方法

1,存放增量条件的表中,不存放单条数据的ID,而是存放数据生成的时间段,我自已设的一个小时,就是记录生成时间的小时段。sphinx根小时段来更数据表中新增加的数据,你可设置3分钟,更新一次,时间自己定。

mysql增量索引_什么是mysql的增量索引?

大家是不是对mysql中的增量索引有一定的了解了呢?是不是都明白了在增量索引中存在的一些问题以及解决方法?如果还没理解,可以关注课课家,进一步学习。