ORACLE 数据库对象
ORACLE 数据库对象
——索引
q 索引是与表相关的一个可选结构
q 用以提高 SQL 语句执行的性能
q 减少磁盘I/O
q 使用 CREATE INDEX 语句创建索引
q 在逻辑上和物理上都独立于表的数据
q Oracle 自动维护索引
索引的目标:提高查询性能
索引对增删改查的影响
SQL语句
对性能的影响
SELECT
查询性能提高
UPDATE
更新删除时需要先查询,从此角度性能提高
更新删除时引起索引修改,从此角度性能下降
DELETE
INSERT
增加引起索引改变,索引对其负面影响更大,性能下降
什么时候建立索引?
1. 需要频繁查询的数据
2. 数据量较多
3. 该列不会频繁 update/insert/delete
4. 在 where/order by/group by 字句中出现的列
5. 在高基数列上建立索引(重复数据不多)
empno
ename
sal
1
HUANGPei
1000
1
HUANGPei
1000
3
HUANGPei
1000
4
HUANGPei
1000
empno
ename
sal
1
HUANGPei
1000
1
HUANGPei
1000
1
HUANGPei
1000
1
HUANGPei
1000
基数:3/4
基数:1/4
索引的类型
唯一索引
位图索引
组合索引
基于函数的索引
反向键索引
创建标准索引
CREATE INDEX item_index ON itemfile (itemcode)
TABLESPACE index_tbs;
重建索引
ALTER INDEX item_index REBUILD;
删除索引
DROP INDEX item_index;
唯一索引
q 唯一索引确保在定义索引的列中没有重复值
q Oracle 自动在表的主键列上创建唯一索引
q 使用CREATE UNIQUE INDEX语句创建唯一索引
CREATE UNIQUE INDEX item_index
ON itemfile (itemcode);
组合索引
q  
相关文档:
delete from tbl_talbe
where (col1,col2,col3) in
(select col1,col2,col3
from tbl_table
group by col1,col2,col3
&nbs ......
oracle startup时 报错ORA-00600: 内部错误代码,参数: [kcratr1_lostwrt], [], [], [], [], [], [], []
原因可能是非法关机或掉电造成,以下是出现的问题及解决方法:
C:\Documents and Settings\Administrator>sqlplus
请输入用户名: /as sysdba
SQL> startup
ORA-01081: 无法启动已在运行的 ORACLE ......
也许对SQL Server来说,取前N位的数据是很简单的事情,一条TOP语句就搞定了.
在Oracle中我们往往会感觉到头疼,平日里也常会用到,主要是使用partition by.
语法如下:
select emp_card_no,work_date,read_card_date,count(rownum) as cnt
from hra_read_car ......
SQL的优化应该从
5
个方面进行调整:
1.去掉不必要的大型表的全表扫描
2.缓存小型表的全表扫描
3.检验优化索引的使用
4.检验优化的连接技术
5.尽可能减少执行计划的
Cost
SQL语句:
是对数据库(
数据
)
进行操作的惟一途径;
消耗了70%~90%
的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化, ......
Create directory让我们可以在Oracle数据库中灵活的对文件进行读写操作,极大的提高了Oracle的易用性和可扩展性。
其语法为:
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
本案例具体创建如下:
create or replace directory exp_dir as '/tmp';
目录创建以后,就可以把读写权限授予特定用户 ......