由Oracle索引来理解ArcSDE索引
作者:网络转载 发布时间:[ 2012/10/15 10:14:53 ] 推荐标签:
利用PL/SQLDeveloper的执行计划查看:
select* from test_objects where object_name = 'PEOPLE‘
创建索引:
createindex idx_test_object on test_objects(object_name);
再次查看执行计划。
这里需要注意的是,搜索条件中包含索引列才能真正使用到索引所带来的好处。
select* from test_objects where owner = 'SCOTT'
1、添加数据对索引的影响
以表people为例,一旦在其上创建了索引,向其中插入数据时,数据库将会重新组织索引。
insert into people (ID, NAME, STATUS) values (11, 'Zoey', 'ACT');
在以上SQL语句中,向表people中插入名为“Zoey”的用户信息。此时数据库除了正常的插入操作开销之外,还需要将为该记录添加索引项,而索引已有数据块无法满足存储要求,因此,数据库将为其分配新的存储空间,如图所示:
2、修改数据对索引的影响
从图中可以看出,“James”被添加了删除标记,而在后一个数据块中添加了索引项“Winne”。Oracle采取该策略是为了大程度上减小数据库操作的开销。但这同时带来了空间上的浪费,因为索引项“James”仍然占用索引空间。新的索引项仍然不能够插入第一个数据块中。
3、删除数据对索引的影响
删除数据对索引的影响相对简单,因为数据删除之后,相应的索引项只是被打上了删除标记,表征该索引项不可用。例如,利用如下SQL语句删除一条记录。
delete from people where name = 'Robert'
此时的索引项被修改为:
分析此时的索引结构可知,删除操作是DML操作中针对索引的开销小的一种。但是,仍然不可避免地形成了对存储空间的浪费。
说明:从上面对Oracle的增删改操作对索引的影响可以类比一下ArcSDE增删改对索引的影响是一样的。所以说,频繁的进行编辑操作,不仅仅是对表进行操作,相关的索引信息也会发生很多变化。
那么由上面所示,可以看出,其实索引大的功劳还是针对只读数据(不是的),那么可以得到以下的总结:
1、小数据量的表不宜使用索引
小数据量的表,首先要创建索引,并寻找数据块,然后才进行数据的实际搜索,因此,对于小数据量的表,使用全表搜索往往会快于使用索引。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11