《第十三章其它数据库对象.ppt》由会员分享,可在线阅读,更多相关《第十三章其它数据库对象.ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十三章其它数据库对象第十三章其它数据库对象目目 标标创建,维护和使用序列创建,维护和使用序列创建和维护索引创建和维护索引创建私有和共有同义字创建私有和共有同义字在完成本课的学习后,你应该能够掌握:在完成本课的学习后,你应该能够掌握:数据库对象数据库对象对对 象象描述描述表表存储的基本单元;由行和列组成存储的基本单元;由行和列组成视图视图逻辑上代表从一张或者多张表的数据子逻辑上代表从一张或者多张表的数据子集集序列序列生成主键值生成主键值索引索引提高某些查询的性能提高某些查询的性能同义字同义字对象的另外一个名字对象的另外一个名字什么是什么是序列?序列?自动生成的唯一序列号自动生成的唯一序列号是可
2、分享的对象是可分享的对象通常用来创建主键值通常用来创建主键值替代应用程序代码替代应用程序代码当缓冲在内存中时,加速访问序列的效率当缓冲在内存中时,加速访问序列的效率CREATE SEQUENCE语句语法语句语法定义一个序列,自动生成连续的数字定义一个序列,自动生成连续的数字建立序列建立序列建立一个名为建立一个名为DEPT_DEPTID_SEQ的的序列,序列,用用作作DEPARTMENTS表的主键表的主键不要使用不要使用CYCLE选项选项校验你的在校验你的在USER_SEQUENCES数据字典表中数据字典表中的的序列序列值值如果如果NOCACHE被指定,被指定,LAST_NUMBER列列会显示下
3、一个可用的会显示下一个可用的序列值序列值确认序列确认序列NEXTVAL和和CURRVAL伪列伪列NEXTVAL返回下一个可用的返回下一个可用的sequence值。当值。当它被使用的时候,每次都会返回一个唯一值,它被使用的时候,每次都会返回一个唯一值,即使对于不同的用户即使对于不同的用户CURRVAL获取当前的获取当前的sequence值值在在CURRVAL包含一个值之前,包含一个值之前,NEXTVAL必须被必须被执行获取下一个执行获取下一个在位置在位置ID为为2500里,添加一个新的部门名为里,添加一个新的部门名为“SUPPORT”为为DEPT_DEPTID_SEQ序列查看当前值序列查看当前值
4、使用使用序列序列使用使用序列序列在内存中缓冲序列值会给这些值更快的访问速在内存中缓冲序列值会给这些值更快的访问速度度下面这些情况时下面这些情况时Sequence值可能产生间隙值可能产生间隙 回滚发生回滚发生 系统宕机系统宕机 序列被用于其他的表序列被用于其他的表如果使用如果使用NOCACHE,创建序列,通过查询创建序列,通过查询USER_SEQUENCES表,查看下一个可用的值表,查看下一个可用的值修改序列修改序列改变递增值,最大值,最小值,循环选项或者缓冲选项改变递增值,最大值,最小值,循环选项或者缓冲选项修改修改序列序列指导指导你必须是你必须是序列序列的拥有者或者有的拥有者或者有ALTER
5、特权特权只对将来的序列号有影响只对将来的序列号有影响序列必须删除和重新创建,才能使序列在一个序列必须删除和重新创建,才能使序列在一个不同的数开始不同的数开始执行一些确认执行一些确认删除序列删除序列通过使用通过使用DROP SEQUENCE语句语句删除数据字删除数据字典中的序列典中的序列一旦序列被删除,序列不能够再被用户参考一旦序列被删除,序列不能够再被用户参考同义字同义字使参考到被另外一个用户拥有的表更加容易使参考到被另外一个用户拥有的表更加容易缩短对象名称长度缩短对象名称长度通过创建同义字(对象的另外一个名字)简化访问通过创建同义字(对象的另外一个名字)简化访问对象的操作。使用同义字,你可以
6、对象的操作。使用同义字,你可以创建和删除同义字创建和删除同义字为为DEPT_SUM_VU视图创建一个缩略名视图创建一个缩略名删除同义字删除同义字索引是什么?索引是什么?是一个是一个schema对象对象被被Oracle服务器使用通过具有指示的行来加速服务器使用通过具有指示的行来加速检索检索通过快速路径访问方法定位数据可以减少磁盘通过快速路径访问方法定位数据可以减少磁盘I/O和它所引的表相对独立和它所引的表相对独立被被Oracle服务器自动使用和维护服务器自动使用和维护索引是索引是如何创建索引如何创建索引自动:当你在表定义中定义一个主键或者唯一自动:当你在表定义中定义一个主键或者唯一键约束时,一个
7、唯一索引被自动创建键约束时,一个唯一索引被自动创建手动:用户可以对列创建非唯一性索引,从而手动:用户可以对列创建非唯一性索引,从而加速访问访问行的速度加速访问访问行的速度在一个或者更多的列上创建索引在一个或者更多的列上创建索引提高访问提高访问EMPLOYEES表中表中LAST_NAME列的查询速度列的查询速度创建索引创建索引何时创建索引何时创建索引一列包含有大范围值一列包含有大范围值一列包含有大量空值一列包含有大量空值多于一列经常在多于一列经常在WHERE子句或者联合条件下子句或者联合条件下被一起使用被一起使用表很大并且大部分的查询预期检索少于百分之表很大并且大部分的查询预期检索少于百分之2或
8、或4的行数的行数你应当创建索引,如果:你应当创建索引,如果:何时不创建索引何时不创建索引表很小表很小做为查询中的条件列不经常使用做为查询中的条件列不经常使用大部分的查询预期检索多于百分之大部分的查询预期检索多于百分之2或或4的行数的行数表被经常更新表被经常更新索引列被参考做为表达式的一部分索引列被参考做为表达式的一部分下面这些条件通常不值得建立索引下面这些条件通常不值得建立索引确认索引确认索引USER_INDEXES数据字典视图包含索引的名字数据字典视图包含索引的名字和唯一性和唯一性USER_IND_COLUMNS视图包含索引名称,表名视图包含索引名称,表名称和列名称。称和列名称。通过使用通过
9、使用DROP INDEX命令从数据字典中删除命令从数据字典中删除索引索引从数据词典中删除从数据词典中删除UPPER_LAST_NAME_IDX索索引引要删除一个索引,你必须是索引的拥有者或者要删除一个索引,你必须是索引的拥有者或者拥有拥有DROP ANY INDEX的权利的权利删除索引删除索引SQL执行计划执行计划在执行SQL语句前,系统根据优化方式转换为执行方案,称为SQL PLAN。Oracle9i,SQL语句和SQL PLAN都存储在共享内存中,并产生一个HASH值。对不同的优化,通过SQL PLAN进行比较后获得最优的方案。EXPLAIN PLAN方法方法使用PLAN_TABLE表存储
10、SQL计划创建PLAN_TABLE%ORACLE_HOME%rdbmsadminUTLXPLAN.SQL获得SQL的执行计划EXPLAIN PLAN FOR SELECT 命令查询PLAN_TABLE%ORACLE_HOME%rdbmsadminUTLXPLS.SQLSQL*PLUS的的AUTOTRACE方法方法创建PLUSTRACE角色connect/as sysdba%ORACLE_HOME%sqlplusadminplustrce.sqlPLUSTRACE授予用户GRANT PLUSTRACE TO 用户;创建PLAN_TABLE%ORACLE_HOME%rdbmsadminutlxpl
11、an.sqlSET AUTOTRACE命令获得计划和统计数字SET AUTOTRACE OFF|ON|TRACEONLY EXPLAIN STATISTICS两种优化器两种优化器基于规则(RBO):按系统预设的优化路径给出优化的SQL方案RBO适合于OLTP,Oracle 10g不再支持RBO基于成本(CBO):优化器根据对象的分析数据给出最优化执行计划使用CBO需要及时对对象进行分析获得分析数据,分析数据存储在数据字典中,一般不会自动更新。如果分析数据与实际数据情况相差太大,可能产生很差的执行计划。对没有分析数据的对象,系统会临时进行抽样分析CBO适合于OLAP、DSS的应用1.通过ROWI
12、D的单行访问2.通过簇连接的单行访问3.通过散列键或主关键字的单行访问4.通过主关键字的单行访问5.簇连接6.散列簇键7.索引簇键8.复合键9.单列索引10.在索引列上的有边界搜索11.在索引列上的无边界搜索12.排序合并连接13.索引列的最大到最小14.通过索引列排序15.全表扫描优化路径优化路径设置优化模式设置优化模式实例级optimizer_mode=RULE|CHOOSE|FIRST_ROWS|ALL_ROWS对话级ALTER SESSION SET optimizer_goal=RULE|CHOOSE|FIRST_ROWS|ALL_ROWS语句级使用SQL提示模式选项模式选项CHOO
13、SE:在对象分析数据存在时CBO,否则使用RBO。CHOOSE是缺省值。RULE:基于规则方式。FIRST_ROWS:在对象分析数据存在时使用CBO,且选择响应时间最短执行计划。用于OLTP和小型的DSS。9i提供FIRST_ROWS_。ALL_ROWS:在对象分析数据存在时使用CBO,且选择最大吞吐量的执行计划。用于大规模的DSS。SQL提示提示在SQL动词后面加入暗示语句。格式:/*+提示*/或-+提示/优化方式:CHOOSE、RULE、FIRST_ROWS、FIRST_ROWS_、ALL_ROWS 例:SELECT/*+RULE*/*FROM employees WHERE employee_id=170小小 结结使用序列生成器自动生成序列号使用序列生成器自动生成序列号在在USER_SEQUENCES数据字典表中查看序列信数据字典表中查看序列信息息创建索引提高检索速度创建索引提高检索速度在在USER_INDEXES字典表中查看索引信息字典表中查看索引信息使用同义字为对象提供可选择的名字使用同义字为对象提供可选择的名字现在本课结束了,你应该已经掌握了以下内容:现在本课结束了,你应该已经掌握了以下内容:
限制150内