微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

oracle如何使用索引

时间:2024-09-20 23:12:20   

大家好,今天Win10系统之家小编给大家分享「oracle如何使用索引」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

生意如何小账本专业版-小商户销售和存货记账系列软件最新版本下载

1.oracle 数据库如何建立索引 如何用索引?


  创建索引语法:
CREATE [UNIQUE] | [BITMAP] INDEX index_name
--unique表示唯一索引
ON table_name([column1 [ASC|DESC],column2
--bitmap,创建位图索引
[ASC|DESC],…] | [express])[TABLESPACE tablespace_name][PCTFREE n1]
--指定索引在数据块中空闲空间
[STORAGE (INITIAL n2)][NOLOGGING]
--表示创建和重建索引时允许对表做DML操作,默认情况下不应该使用
[NOLINE][NOSORT];
--表示创建索引时不进行排序,默认不适用,如果数据已经是按照该索引顺序排列的可以使用

扩展资料:
1、如果有两个或者以上的索引,其中有一个唯一性索引,而其他是非唯一,这种情况下oracle将使用唯一性索引而完全忽略非唯一性索引
2、至少要包含组合索引的第一列(即如果索引建立在多个列上,只有它的第一个列被where子句引用时,优化器才会使用该索引)
3、小表不要简历索引
4、对于基数大的列适合建立B树索引,对于基数小的列适合简历位图索引
5、列中有很多空值,但经常查询该列上非空记录时应该建立索引
6、经常进行连接查询的列应该创建索引
7、使用create index时要将最常查询的列放在最前面
8、LONG(可变长字符串数据,最长2G)和LONG RAW(可变长二进制数据,最长2G)列不能创建索引
9、限制表中索引的数量(创建索引耗费时间,并且随数据量的增大而增大;索引会占用物理空间;当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度)

2.oracle 怎样添加索引


  create index 索引名 on tbl_name (A1,B1).
创建索引的目的是为了在某些字段上查询更快,而添加的一些预地址。
1.服务器及工具
数据库服务器:2013年最新版本Oracle 12C。
应用服务器:Oracle Application Server。
开发工具:OracleJDeveloper,Oracle Designer,Oracle Developer,等等。
2.企业应用软件
企业资源计划(ERP)软件。已有10年以上的历史。2005年,并购了开发企业软件的仁科软件公司(PeopleSoft)以增强在这方面的竞争力。
客户关系管理(CRM)软件。自1998年开始研发这种软件。2005年,并购了开发客户关系管理软件的希柏软件公司(Siebel)。
3. Oracle职业发展力计划(Oracle WDP)
Oracle WDP 全称为Oracle Workforce Development Program,是Oracle (甲骨文)公司专门面向学生、个人、在职人员等群体开设的职业发展力课程。Oracle的技术广泛应用于各行各业,其中电信、电力、金融、政府及大量制造业都需要Oracle技术人才,Oracle公司针对职业教育市场在全球推广的项目,其以低廉的成本给这部分人群提供Oracle技术培训,经过系统化的实训,让这部分人群能够迅速掌握Oracle最新的核心技术,并能胜任企业大型数据库管理、维护、开发工作。

3.oracle数据库添加索引怎么使用


  当索引的碎片过多时,会影响执行查询的速度,从而影响到我们的工作效率。这时候采取的最有利的措施莫过于重建索引了。本文主要介绍了oracle数据库中检查索引碎片并重建索引的过程,接下来我们就开始介绍这一过程。 重建索引的步骤如下: 1. 确认基本信息 登入数据库,找到专门存放index 的tablespace,并且这个tablespace下所有index的owner都是tax.将index专门存放在一个独立的tablespace, 与数据表的tablespace分离,是常用的数据库设计方法。 2. 查找哪些index需要重建 通过anlyze index .... validate structure命令可以分析单个指定的index,并且将单个index 分析的结果存放到 index_stats试图下。一般判断的依据是: height >4 pct_used < 50%="" del_lf_rows="" lf_rows="" +0.001=""> 0.03 g ) 3. google上下载了遍历所有index脚本 发现anlyze index .... validate structure只能填充单个index分析信息,于是google了下,从网上下了个loop 脚本,遍历索引空间下所有的索引名字,并且可以把所有index的分析信息存放到自己建立的一个用户表中。 4. anlyze index 锁定index 发现下载的脚本不好用,应为anlyze index在分析索引前要争取独占锁,锁住index,很明显有些index正在被应用系统的使用,所以运行anlyze失败。这里吸取的教训是,尽量晚上做这种事。但是本人比较喜欢准时回家,所以在语句中添加exception handler,抛出anlyze index执行失败的那些index 名称,使脚本正常运行完毕。并且根据打印到前台的index name手动执行那些index分析。 5. 总结 虽然发现522个index中有160个符合上面的判断的依据。但是发现索引都不大,而那些拥有百万leaf的索引又没有符合上面的判断条件,所以结论是无需index rebuild online. 没有啥碎片。 6.什么时候可以rebuild index呢? rebuild index online,对那些有大量dml操作的大索引是有益的。可以每个月季度做一次针对较大索引的rebuild。

4.请教:oracle中索引应用


  一.索引介绍
 1.1 索引的创建语法:
 CREATE UNIUQE | BITMAP INDEX .
 ON .
 ( |  ASC | DESC,
  |  ASC | DESC,...)
 TABLESPACE 
 STORAGE 
 LOGGING | NOLOGGING
 COMPUTE STATISTICS
 NOCOMPRESS | COMPRESS
 NOSORT | REVERSE
 PARTITION | GLOBAL PARTITION
 相关说明
 1) UNIQUE | BITMAP:指定UNIQUE为唯一值索引,BITMAP为位图索引,省略为B-Tree索引。
 2) |  ASC | DESC:可以对多列进行联合索引,当为expression时即“基于函数的索引”
 3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)
 4)STORAGE:可进一步设置表空间的存储参数
 5)LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)
 6)COMPUTE STATISTICS:创建新索引时收集统计信息
 7)NOCOMPRESS | COMPRESS:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)
 8)NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值
 9)PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区
 1.2 索引特点:
 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
 1.3 索引不足:
 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
 1.4 应该建索引列的特点:
 1)在经常需要搜索的列上,可以加快搜索的速度;
 2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
 3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
 4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
 5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
 6)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
 1.5 不应该建索引列的特点:
 第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。
 第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
 第三,对于那些定义为blob数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
 第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
 1.6 限制索引
 限制索引是一些没有经验的开发人员经常犯的错误之一。在SQL中有很多陷阱会使一些索引无法使用。下面讨论一些常见的问题:
 1.6.1 使用不等于操作符(<>、!=)
 下面的查询即使在cust_rating列有一个索引,查询语句仍然执行一次全表扫描。
 select cust_Id,cust_name from customers where cust_rating <> 'aa';
 把上面的语句改成如下的查询语句,这样,在采用基于规则的优化器而不是基于代价的优化器(更智能)时,将会使用索引。
 select cust_Id,cust_name from customers where cust_rating < 'aa'="" or="" cust_rating=""> 'aa';
 特别注意:通过把不等于操作符改成OR条件,就可以使用索引,以避免全表扫描。
 1.6.2 使用IS NULL 或IS NOT NULL
 使用IS NULL 或IS NOT NULL同样会限制索引的使用。因为NULL值并没有被定义。在SQL语句中使用NULL会有很多的麻烦。因此建议开发人员在建表时,把需要索引的列设成 NOT NULL。如果被索引的列在某些行中存在NULL值,就不会使用这个索引(除非索引是一个位图索引,关于位图索引在稍后在详细讨论)。
 1.6.3 使用函数
 如果不使用基于函数的索引,那么在SQL语句的WHERE子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。 下面的查询不会使用索引(只要它不是基于函数的索引)
 select empno,ename,deptno from emp where trunc(hiredate)='01-MAY-81';
 把上面的语句改成下面的语句,这样就可以通过索引进行查找。
 select empno,ename,deptno from emp where hiredate<(to_date('01-may-81')+0.9999); 1.6.4="" 比较不匹配的数据类型="" 也是比较难于发现的性能问题之一。="" 注意下面查询的例子,account_number是一个varchar2类型,在account_number字段上有索引。="" 下面的语句将执行全表扫描:="" select="" bank_name,address,city,state,zip="" from="" banks="" where="" account_number="990354;" oracle可以自动把where子句变成to_number(account_number)="990354,这样就限制了索引的使用,改成下面的查询就可以使用索引:" select="" bank_name,address,city,state,zip="" from="" banks="" where="" account_number='990354' ;="" 特别注意:不匹配的数据类型之间比较会让oracle自动限制索引的使用,即便对这个查询执行explain="" plan也不能让您明白为什么做了一次“全表扫描”。="" 1.7="" 查询索引="" 查询dba_indexes视图可得到表中所有索引的列表,注意只能通过user_indexes的方法来检索模式(schema)的索引。访问user_ind_columns视图可得到一个给定表中被索引的特定列。="" 1.8="" 组合索引="" 当某个索引包含有多个已索引的列时,称这个索引为组合(concatented)索引。在="" oracle9i引入跳跃式扫描的索引访问方法之前,查询只能在有限条件下使用该索引。比如:表emp有一个组合索引键,该索引包含了empno、="" ename和deptno。在oracle9i之前除非在where之句中对第一列(empno)指定一个值,否则就不能使用这个索引键进行一次范围扫描。="" 特别注意:在oracle9i之前,只有在使用到索引的前导索引时才可以使用组合索引!="" 1.9="" oracle="" rowid=""></(to_date('01-may-81')+0.9999);>

5.如何使用oracle 索引表


  一是在索引表中,不能对非主键建立索引,。这是索引表建立的一个限制条件,数据库管理人员必须无条件的遵守。二是必须给索引表建立主键。有些数据库管理员有个习惯,在建立表的时候,一开始不设置主键。等到表维护的时候,再确定某个字段作为主键。但是,在索引表建立的时候,一开始就要指定表的主键,否则的话,会有错误产生。这也是数据库管理人员需要注意的。创建索引不是为了在sql语句中用的,而是可以大大提高系统的性能。 
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因。 
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

以上就是关于「oracle如何使用索引」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

Win10系统之家文②章!】

相关文章

  • oracle如何使用索引

    oracle如何使用索引

    1.oracle数据库如何建立索引如何用索引?创建索引语法:CREATE[UNIQUE]|[BITMAP]INDEXindex_name--unique表示唯一索引ONtable_name([column1[ASC|DESC],column2--bitmap,创建位图索引[ASC|DESC],…]|[express])[TABLES...
  • 如何使用淘宝禁用的关键词

    如何使用淘宝禁用的关键词

    1.淘宝宝贝标题禁用哪些关键词为了你的店铺避免被淘宝禁言,最好要看看哪些是淘宝标题禁用关键词,以免被降权处罚。关于标题禁用的关键字,统计了以下几点,跟大家一起学习(以下内容无法得到官方的证实,淘宝只会告诉你有...
  • 如何使用ghost

    如何使用ghost

    1.如何使用ghost备份和还原系统ghost备份:1、重启选择进入DOS系统,转到备份盘(输入命令“E:”打回车),进入备份目录(输入命令“CDGHOST”打回车),运行GHOST程序(输入命令“GHOST”打回车)即可启动GHOST程序,OK按回车后后进...
  • 如何解决无法访问局域网内的电脑并提示可能没有权限使用

    如何解决无法访问局域网内的电脑并提示可能没有权限使用

    1.无法访问局域网的电脑是怎么回事,提示没有访问没有权限.开启Workstation服务、Server服务、ComputerBrowser服务,设为自动。2.启用Guest账户。方法1:开始--控制面板--用户账户--点击"Guest"进入,点击“启用来宾账户”。方...