FileGDB和数据库文本检索的效率比较

0
分享 2015-12-13
前提条件:
测试数据:一个包括700多w点的POI点,其中包括一个name字段,包括地名信息 分别将该测试数据存储到FileGDB和Oracle各一份,并对name字段建立BTREE索引,并通过ArcGIS Server发布两个服务,分别是filegdb_test和oracle_test. 软件版本: ArcGIS Server10.3.1 ArcSDE 10.3.1 Oracle11.2.0.4 For Linux X64
测试过程:
分别对“=”和like两个谓词进行测试。
测试1,分别查询name=’创业工场11’,都返回一条记录
在filegdb_test服务中的结果如下图:
用时891ms
在oracle_test服务中的查询结果如下图:
用时409ms
由于在两个数据源上对name字段都已经建索引了,在“=”谓词比较的时候,两者都在1s之内查出来了,速度oracle更快一些。
测试2:分别查询name like ‘%肯德基%’,该模糊查询强迫两个数据都走全表扫描。
在filegdb_test服务中的结果如下图:
用时57.2s
在oracle_test中的结果如下图:
用时3.25s
结果非常明显,oracle全表扫描速度比Filegdb要快的多。
测试3:对name字段建立全文检索索引,使用oracle的full text search测试模糊查询的速度 准备工作: 对name字段建立全文索引 exec ctx_ddl.create_preference (‘mylexer’, ‘CHINESE_LEXER’);
create index result_name_fullindex on result_shape(name) indextype is ctxsys.context parameters (‘lexer mylexer’) parallel 3;
将arcgis server 的standard_query参数设置为false

用时46ms。
结论:
  1. 关系型数据库全表扫描的速度要比filegdb快很多。
  2. BTREE索引的速度关系型数据库也要比filegdb要好。
  3. 如果有对文本对文本查询的需求,建议使用数据库的全文检索(常用的几种的关系型数据库都提供了该功能),不要使用like。

文章来源:http://blog.csdn.net/liufeng1980423/article/details/50326897

0 个评论

要回复文章请先登录注册