由Oracle索引来理解ArcSDE索引_MariaDB_青云站长教程网
欢迎来到站长教程网!
  • 秒到短信接口 免费试用
  • 微信支付宝接口 秒结算
  • 中文网站排名|申请加入
  • 搜索引擎全站查询
  • 查询移动网站权重数据
  • 海外主机 台湾公司直销
  • MariaDB

    当前位置:主页 > 数据库 > MariaDB >

    由Oracle索引来理解ArcSDE索引

    时间:2019-11-09|栏目:MariaDB|点击:
  • 这个题目有点怪怪的,意思就是一提到ArcSDE的性能问题,都会提到重建空间索引,本文就以Oracle的索引例子,来类比ArcSDE for Oracle的空间索引,如果能把oracle索引示例弄明白,那么对ArcSDE的索引问题应该非常好理解了。

    在数据库系统中,索引是非常重要的一个对象,尤其是面对大型数据表时,索引能大大提高数据检索的速度。本节将介绍索引的原理及索引的使用。

    索引在现实世界中最典型的例子莫过于字典检索了。用户在使用字典时,可以使用两种方式,一是逐页翻查,以获得需要查找的目标;二是根据字典的检索目录来获得目标所在的页数,然后直接在该页获得查找目标。毫无疑问,利用检索目录(索引)检索目标是更为高效的方式。

    现有的主流数据库都提供了索引这一概念,Oracle也不例外。一旦在数据表的某列上建立了索引,Oracle将另辟新的空间,以存储该列上所有值与其记录的rowid的对应关系。当用户试图以索引列作为搜索条件时,Oracle将利用索引来获得相应的rowid,并捕获该记录。

    select * from people where name = 'David'

    当Oracle处理该查询语句时,将执行全表扫描。当搜索到第6条记录时,会发现该条记录符合搜索条件,并将该记录纳入结果集合。但是搜索并不会停止,因为Oracle并不知道在后面的记录中是否仍然存在符合条件的记录。直至搜索完整个表,Oracle才会返回最终的结果集合。

    但是,如果预先在表people的name列上创建了一个索引,那么,搜索的顺序将完全不同。创建索引的语法如下所示:

    create index idx_people_name on people(name) 

    一旦索引创建,那么表中所有数据将按照字母表顺序进行分块处理,例如,以每5条记录作为一个数据块(当然,实际数据块将大得多)。分块后的数据结构如下图所示。

    由Oracle索引来理解ArcSDE索引


     

    说明:文中的Oracle索引是以字符串字段创建的索引,那么字符串字段是以字母表顺序进行分类的,当然了也可以使用数字、日期等,那么对ArcSDE for Oracle也是一样的,空间索引是格网,与该例子比较,无非是他们将按字母排序,五个五个的,那么ArcGIS是按照格网的范围,在该范围的包含相关的要素。

    此时执行搜索语句select * from people where name = ‘David’;时,Oracle只会在第一个数据块中进行搜索,因为数据库知道,第二个数据库都是M以后的数据。当搜索到David之后,如果下一条记录的name列的值不是David,Oracle也将停止搜索,因为列中所有值都是按照字母表顺序进行排列的,所有的“David”位置肯定是相邻的。一旦搜索到“David”,Oracle会马上获得其对应的rowid,并根据rowid快速定位该记录。 
    对于如下SQL语句,索引的作用会反映的更加清晰。

    select * from people where name = 'Michael'

    select * from people where name = 'Michael';

    因为要搜索的条件为name列的值为“Michael”,所以,将会直接跳转到第二个数据块进行搜索,因为第二个数据块才是以M开头的数据。而且,当获得Michael的下一条记录为“Richard”时,将停止搜索,返回结果集合。

    说明:ArcSDE数据在oracle中进行查询会执行下面的步骤: 
    1)首先比较grid和查询范围,找出在查询范围内的所有grid。 
    2)找出在这些grid内的所有要素。
    3)将这些要素的外包络矩形和查询范围比较,找出所有在查询范围内以及和查询范围相交的要素。 

    基本上可以类比。

    上一篇:Oracle 创建数据连接

    栏    目:MariaDB

    下一篇:Oracle提供的数据字典简介

    本文标题:由Oracle索引来理解ArcSDE索引

    本文地址:http://www.jh-floor.com/shujuku/Mariadb/123412.html

    广告投放 | 联系我们 | 版权申明

    重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

    如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

    联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

    Copyright © 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号