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

前提条件:

测试数据:一个包括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。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值