oracle 字符串索引长度限制,Oracle PL\SQL操作(四)索引与约束

本文深入探讨了Oracle数据库中的索引与约束机制。详细解释了如何利用索引提高查询速度,同时也讨论了索引对不同操作的影响及索引使用的权衡。此外,还介绍了约束的概念及其对数据完整性的保障作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle PL\SQL操作(四)索引与约束

1.数据库的索引

可以将索引概念应用到数据库表上。当一个表含有大量的记录时,Oracle查找该表中的特写记录要花很长的时间——就像花很长时间翻看全书来查找某个主题一样。Oracle有一个易于使用的功能,即可以建立一个次隐藏表,该表包含主表中的一个或多个重要的列,以及在主表中的指相应行的指针。在这里,与书的页码相对应,该隐藏的次表(即索引表)中的指针就是行号。通过访问索引,Oracle可以准确地知道要查找的特定数据在哪一行上。由于索引比引用它的表要小得多,因此用索引查找表中的数据比不用索引的表明赤地快。在一个拥有百万条记录的表中选择与某值相匹配的记录花了18.9秒,当建立该表的索引后,同样的查询只需要0.6秒就能完成。在一个大表中增加索引能使查询速度快几十倍。

一旦建立了表的索引,Oracle自动使该表与表保持同步。对该表的任何INSERT、UPDATE或DELETE操作也自动修改索引,并且,如果索引中含有SELECT语句所需的列,则表的任何SELECT操作都将自动经过索引。增加或删除索引不会影响表的操作——以前使用该表的任何程序现在仍将可以运行,但是操作速度可能变慢。如果删除表,则相关的索引也将自动删除,因为没相关表的索引是没有意义的。

删除索引的语法如下:

DROP INDEX index_name

2.索引何时有用

对于必须读取表中内容的命令,索引改善了它们的响应时间。这意味着SELECT、UPDATE和DELETE命令都能够更快地进行运行,如果该表有对应于这些命令的列的索引。但是增加表的索引并不能提高INSERT命令的输入数据的速度,相反还要降低运行速度。因为索引本身实际上是一个表,因此当对表添加一个记录时,Oracle必须做两次插入。这样,组表增加一个索引将导致插入操作要两倍多的时间(两倍的时间用于两次插入,另外还需要一点时间处理二表之间的同步)。增加两个索引将使用插入操作花三倍时间,三个索引使插入操作花四倍的时间,等等。因此索引的使用要权衡利弊。它们会使数据输入花费更长的时间,但却使读取数据的速度提高。所以,需要快速进行数据输入的应用程序最好不要增加表的索引。例如,超市中的销售系统,应使收很机尽可能快地围绕销售事务进行工作(即直接插入到数据库中)。这时,若给存储事务的表增加一个索引将是错误的,因为它会使插入变变慢。另一方面,�

相关文档:

系统环境:Windows 7

软件环境:Visual C++ 2008 SP1 +SQL Server 2005

本次目的:编写一个航空管理系统

这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......

if exists(select * from master.dbo.sysdatabases where name = 's2723103005')

begin

drop database s2723103005

print '已删除数据库s2723103005'

end

create database s2723103005

on primary

(name=His_data,

filename = 'd:\database\his_data.mdf',

siz ......

1.Oracle怎样存储文本

CHAR和VARCHAR2的区别

•CHAR定长字符串,VARCHAR2变长字符串。

•CHAR(n) 定长字符串,n字节,n的取值范围:1~2000字节。

•VARCHAR2(n) 可变长的字符串,定义时应指明最大长度,取值范围:1~ 4000字节。

2. Oracle怎样存储数值

数值类型说明: NUMBER(m , n)

数字 ......

1.系统变量函数

(1)SYSDATE

该函数返回当前的日期和时间。返回的是Oracle服务器的当前日期和时间。

select sysdate from dual;

insert into purchase values

(‘Small Widget’,’SH’,sysdate, 10);

insert into purchase values

(‘Meduem Wodget’,’SH’, ......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值