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’, ......