小弟最近在学习这个全文检索,也进行了查询时间的测试,感觉是不是记录数量太少(几千吧),查询时间居然不到一秒,不管是不是开启全文检索,请问是怎么回事呢?从这里我看不出全文检索的有什么优势O
关系数据库查询的时间开销主要包括:网络延迟,磁盘访问,sql分析,内存访问(缓存)等。
在我们的oracle系统中,对近百万的商家名数据进行全表扫描查询,比如:select * like '%酒店%' from xxx,时间大约也就是几秒这样的数量级。对这样的大表,开销一般以磁盘访问为主,所以索引的效果非常突出。相比之下几千条数据对数据库来讲其实是非常小的数目,一般数据库都可以全部缓存起来,而在内存缓存中进行全表扫描和索引查询的差别就不那么明显了,这时网络延迟通常是最主要的因素。所以,你可以多进行一些实验,看看查询开销主要是在哪一个因素上。
另外,对于BerkeleyDB和Lucene来讲,不存在网络延迟问题,效率都很高。尤其BerkeleyDB通常每秒可以执行数万次查询。理论上,除开网络延迟,SQLServer的全文索引效率应该与BerkeleyDB和Lucene接近。