B-树索引与位图索引 (ZHUAN)
B-树索引在Oracle中是一个通用的索引,在创建索引时它就是默认的索引类型。最多可以包括32列。 位图索引Oracle为每个唯一键创建一个位图,然后把与键值所关联的ROWID保存为位图。最多可以包括30列。 一般情况下,大多数用户都只创建TYPE为NORMAL的B-树索引,所以对于较低基数的列我们都是不创建索引的,因为B-树索引对查询速度提升不一定会有改善,甚至会增加Insert、Update、Delete命令所消耗的时间。下面我们通过一个例子来比较B-树索引与位图索引在对查询速度提升的效果。 SQL>--例如下面一个测试表有534888条记录SQL> select co
查看表中复合数据类型内容
问题起源:http://www.itpub.net/628185.html对于ARRAY字段类型的数据操作 CREATE TYPE ARRAY_LINK AS ARRAY(100) OF NUMBER(15,0);/CREATE TABLE TEST (ID NUMBER(10), LINKS ARRAY_LINK);/INSERT INTO TEST(ID,LINKS) VALUES(1,ARRAY_LINK(11,111));/INSERT INTO TEST(ID,LINKS) VALUES(2,ARRAY_LINK(22,222,2222));/COMMIT;不知道要怎么SELECT才能得到如下结果:ID LINK_MEMBER1 111 1112 222 2222 2222解答:CREATE or replace TYPE ARRAY_LINK AS ARRAY(100) OF NUMBER(15,0);/CREATE TABLE TEST3 (ID NUMBER(10), LINKS ARRAY_LINK)
oracle嵌套表
/*以前在做报表的时候会经常用到oracle的内存表(其实是oracle嵌套表的部分功能,这里在下边介绍)来提高性能。利用oracle内存表进行临时运算通过ref cursor来返回我们想要的结果集。open cur for select * from table(fun_to_table_rb1_1(cur_qc,cur_qm));关于这部分的一些测试可以参看:http://www.itpub.net/showthread.php?s=2642ceb4225ba625b06fa33ee7c44a12&threadid=617298最近把oracle嵌套表的其他功能仔细看了看并做了个简单整理。oracle提供两种使用嵌套表的方法:1. PL/SQL代码中作为扩展PL/SQL语言;(这部分内容就是上边所
Oracle 嵌套表(转)
Oracle 嵌套表 2006-9-3 11:15:00 By:xlingOracle中有两种集合,分别是嵌套表和VARRAY它们在存储的数据类型方面具有相似之处,因为它们都可以包含对象,两者的区别为:嵌套表.尺寸没有限制。.本质上是无序的VARRAY.尺寸必须固定,所有的实例尺寸相同。.在过程化语言中可以作为有序数组进行检索但在Oracle内部看成单个不能分割的单元。.存储效率高。----------------------------------------------------嵌套表CREATE TYPE SCORE_NESTED AS TABLE OF NUMBER;---------------------------------------------------在表中使用嵌套表 C
PLSQL计算质数(转)
PLSQL计算质数看到有人实现了一个计算质数的函数,就是效率有点差,贴一个以前写的计算质数的算法。目标很简单,列出100以内的质数。其实算法很简单,两个循环就搞定了。但是发现使用不同的算法,执行效率差别之大相当惊人,特别是数据量级很大的时候。下面就是最常见的一种写法:(也是最差的一种) PHP code: SQL> SET SERVEROUT ON SQL> DECLARE 2 V_FLAG BOOLEAN; 3 BEGIN 4 FOR I IN 2 .. 100 LOOP 5 V_FLAG := TRUE; 6 FOR J IN 2 .. I - 1 LOOP 7 IF MOD(I,J) = 0 THEN 8 V_FLA
Oracle诊断案例
Oracle诊断案例-Sql_trace之一问题描述:这是帮助一个公司的诊断案例.应用是一个后台新闻发布系统.症状是,通过连接访问新闻页是极其缓慢通常需要十数秒才能返回.这种性能是用户不能忍受的.操作系统:SunOS 5.8数据库版本:8.1.71.检查并跟踪数据库进程诊断时是晚上,无用户访问在前台点击相关页面,同时进行进程跟踪查询v$session视图,获取进程信息 PHP code: SQL> select sid,serial#,username from v$session; SID SERIAL# USERNAME ---------- ---------- ------------------------------ 1 1
Oracle程序包(存储过程)返回记录集 (转载)
CREATE OR REPLACE PACKAGE BODY "SMS_PAY"."SMSMAINT" IS --功能描述:查询代理银行交易流水信息 writer: wang haibo 2004-08-24 PROCEDURE GetAgtBankFlow(AreaCode in varchar2,KeyWord in varchar2,startTradeDate in varchar2,endTradeDate in varchar2,Re_CURSOR OUT T_CURSOR,ret out number) is IsExists number; strSQL VARCHAR2(2048); Begin --检查临时表是否已经存在,如果不存在,则创建,否则插入数据
引用
http://www.itpub.net/thread-620427-1-1.html http://www.itpub.net/viewthread.php?tid=699527[@more@]
Oracle新手备份问题(两个问题)
问题1:我想学习使用Rman的方法备份和恢复数据库,从网上和书上看到,得知需要该数据库的Log_mode为archivelog模式,而我的模式如下:SQL> select dbid,name,log_mode,current_scn from v$database; ...
(转)获取随机数
ABS(MOD(DBMS_RANDOM.RANDOM,100))[@more@]
Oracle数据库备份与恢复
备份1.conn sys/**** as sysdba2.select dbid,name,log_mode,current_scn from v$database; --关键是要注意log_mode若是noarchivelog则执行下面的操作3.select name from v$datafile union select name from v$controlfile;--搜索出所有的数据文件和控制文件4.shutdown immediate5.host copy 6.startup恢复1.conn sys/**** as sysdba2.shutdown immediate3.host copy4.startup mount5.revover database until cancel6.alter database open resetlogs逻辑备份与恢复1.CREATE DIRECTORY dump dir AS ‘D:DUMP’;GRANT READ, WI