这篇文章将为大家详细讲解有关神谕数据库中索引的常见执行计划是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
今天主要介绍下神谕索引的常见执行计划:
索引全扫描:索引的全扫描,单块读,有序
索引范围扫描:索引的范围扫描
索引快速全扫描:索引的快速全扫描,多块读,无序
索引全扫描(最小/最大):针对最大值(),最小值()函数的查询
索引跳过扫描:查询条件没有用到组合索引的第一列,而组合索引的第一列重复度较高时,可能用到。
这里用简单的测试案例,体会下索引使用这些执行计划的场景。
1. 准备测试环境
创建测试表和索引:
drop table test _ object create table test _ objects sele * from all _ objects;createindexidx _ test _ objects _ 1 entest _ objects(所有者、对象名、子对象名);createindexidx _ test _ objects _ 2 entest _ objects(object _ id);desctest _ objects查看测试表上的索引信息:
selectindex _ name,column_name,column _ position from user _ ind _ columns heretable _ name=' TEST _ OBJECTS ';分析表并清空测试环境的共享池和buffer_cache:
analyzetabletest _计算机统计;altersystemflush shared _ poolaltersystemflush buffer _ cache(9501 . 163.com)
2. 准备SQL语句
根据不同执行计划的场景,编写结构化查询语言语句:
-indexrangscan(索引的范围扫描)从test _ objectsWHEREowner=' SYS '和object _ name=' DBMS _ OUTPUT '中选择owner、object _ name;- INDEXSKIPSCAN(针对最大值(),最小值()函数的查询)SELECTowner,对象名来自test _ objectsWHEREobject _ name=' DBMS _ OUTPUT ';- INDEXFASTFULLSCAN(索引的快速全扫描,多块读,无序)选择所有者,对象名称来自测试对象;- INDEXFULLSCAN(索引的全扫描,单块读,有序)SELECTowner,object _ name来自test _ objectsorderby 1,2;-索引全扫描(最小/最大)(针对最大值(),最小值()函数的查询)从测试对象中选择max(object _ id);3. 实验论证
结果如下:
(1)索引范围扫描
setautotracetraceonlySELECTowner,对象名来自test _ objectsWHEREowner=' SYS '和object _ name=' DBMS _ OUTPUT
(2)索引跳过扫描
从test _ objectsWHEREobject _ name=' DBMS _ Output '中选择owner,object _ name
(3)索引快速全扫描
选择所有者,对象名称来自测试对象;
(4)索引全扫描
从test _ objectsorderby 1,2中选择owner,object _ name
(5)索引全扫描(最小/最大)
从测试对象中选择最大值(对象标识);
关于神谕数据库中索引的常见执行计划是什么就分享到这里了,希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/130917.html