精华内容
下载资源
问答
  • oracle索引的使用
    2021-05-03 07:22:02

    索引的 统计和使用是数据库自动完成的,不需要手动植入代码 ,

    开发者只需要确认对哪些字段或者字段组合是否创建索引就可以了。

    字段被创建的索引不一定就非得起效,和sql语句使用的条件有关系,

    比如 LIKE 关键 对索引就是无效的。

    创建索引的语法为:CREATE INDEX idx_表名_字段名 ON 表名(字段名或字段组合);

    如果经常 使用ORDER BY子句,进行多字段排序,使用这种复合索引比较有效。

    对了 ,索引的使用一般在WERER条件中使用,也可以使用在DISTINCT去重,还可以

    创建基于函数的所用,比如SELECT * FROM xxx WHERE UPPER(xxx) = ‘XXX‘;

    如果 对UPPER函数创建索引:

    CREATE INDEX idx_表名_字段名 ON 表名(UPPER(xxx));

    在查询时也能提提高效率。

    索引需要定期重建,主要应对数据表的更新,使得索引更精确,保证查询效率。

    所以这就说明添加索引尽量对DML操作少的表字段进行比较好。

    重建索引的 语法为:

    ALTER INDEX  idx_表名_字段名  REBULID;

    如果一张表里面的索引创建不合理,包括索引没有经常更新,不仅不会提升查询效率,

    反而还会降低查询效率。可以考虑删除索引:

    删除索引语法:

    DROP INDEX  idx_表名_字段名  ;

    那么创建索引的原则是什么呢:

    1.一般不再数据量小的表中创建索引。一万条以下可以不用考虑了。

    2.在经常出现在WHERE条件中的字段添加所以。不如多表的 连接条件可以考虑添加索引。

    3.不建议经常在DML表中添加索引。

    4.考虑在经常出现在ORDER BY ,DISTINCT等后的字符添加索引。若是复合索引,

    需要保证添加索引的字符顺序与使用时字段的顺序一致。

    5.索引并不是越多越好,一张表的索引需要个数不易太多。需要删除不常使用的索引。

    以上条件需要实际测试。根据自身环境确定一个比较好的索引原则。

    关于Oracle中索引的使用

    标签:数据量   连接   ora   环境   alter   代码   有关   index   distinct

    本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:https://www.cnblogs.com/dengw125792/p/11879010.html

    更多相关内容
  • Oracle 索引 使用方法

    2012-06-05 16:35:28
    Oracle 索引 使用方法,索引 使用原理, 索引 使用顺序过程
  • oracle索引使用样例

    2012-11-09 21:59:25
    个人整理的索引使用的样例 包含 索引并行创建 分区 监测 和索引统计信息
  • Oracle索引使用详解

    千次阅读 2018-08-11 13:29:55
    -- 索引:普通索引、唯一...使用索引的好处,就是检索效率快,和使用主键、rowid(物理地址) 差不多,使用主键检索的实质就是使用ROWID(物理地址) eg:  create unique index 索引名 on tablename(列名)  create i...

    -- 索引:普通索引、唯一索引、复合索引

               create index XX on tableNamep[colName]

    使用索引的好处,就是检索效率快,和使用主键、rowid(物理地址) 差不多,使用主键检索的实质就是使用ROWID(物理地址)

    eg:
         create unique index 索引名 on tablename(列名)
         create index index_test_ah on t_indextest(id,name);
         select * from t_indextest where id = 777580 and name = 'aa7775

    -- 索引:普通索引、唯一索引、复合索引
    create index XX on tableNamep[colName]
    -- 创建一个普通索引
    -- 创建索引的好处,就是检索效率快,和使用主键、rowid(物理地址) 差不多,使用主键检索的实质就是使用ROWID(物理地址)
    create index index_orders_name on t_owners(name);
    
    create table T_INDEXTEST (ID NUMBER,NAME1 VARCHAR2(30),NAME2 VARCHAR2(30),NAME3 VARCHAR2(30),NAME4 VARCHAR2(30),NAME5 VARCHAR2(30));
    begin
      for x in 1..1000000
        loop
          insert into T_INDEXTEST values (x,'aa'||x,'bb'||x,'cc'||x,'dd'||x,'ee'||x);
        end loop;
        commit;
    end;
    
    create index index_test on T_INDEXTEST(name);
    
    select * from t_indextest where id = 777580
    select * from t_indextest where name = 'aa777580'
    select rowid,t.* from t_indextest t where name = 'aa777580'
    select * from t_indextest where rowid = 'AAAM3lAAGAAAAmOAFs'
    
    -- 创建唯一索引
    create unique index 索引名 on tablename(列名)
    create index index_test_ah on t_indextest(id,name);
    drop index index_test_ah
    select * from t_indextest where id = 777580 and name = 'aa777580'
    
    
    select * from t_indextest where name1='aa777777' and name2='bb777777' and name3='cc777777'
    create index index_indextest_aa on t_indextest(name1,name2,name3)
    
    
    select * from t_account where year = '2012' and month = '01' and ownerid = 1;
    
    

     

    展开全文
  • oracle 索引的定义及使用

    千次阅读 2021-12-28 11:13:48
    索引是建立在表上的可选数据库对象,是一组排序后的的索引键。主要用于加快数据的检索,类似于书籍的目录,快速定位到目标数据。索引在物理上和逻辑上都...当对基表进行DML操作时Oracle会自动管理索引,无需手动处理。

    一、索引的概念:

    索引是建立在表上的可选数据库对象,是一组排序后的的索引键。主要用于加快数据的检索,类似于书籍的目录,快速定位到目标数据。索引在物理上和逻辑上都是独立的,创建或删除索引对基表不会有影响。当对基表进行DML操作时Oracle会自动管理索引,无需手动处理。

    二、索引的原理:

    •   若没有索引,搜索某个记录时(例如查找name='wish')需要搜索所有的记录,因为不能保证只有一个wish,必须全部搜索一遍,
    • 若在name上建立索引,oracle会对全表进行一次搜索,将每条记录的name值哪找升序排列,然后构建索引条目(name和rowid),存储到索引段中,查询name为wish时即可直接查找对应地方
    • 创建了索引并不一定就会使用,oracle自动统计表的信息后,决定是否使用索引,表中数据很少时使用全表扫描速度已经很快,没有必要使用索引

    三、索引的特点:

    1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
    2. 可以大大加快数据的检索速度,这也是创建索引的最主要的原因。
    3. 可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
    4. 在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
    5. 通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

    四、索引的分类:

    1. 普通索引
    2. 唯一索引
    3. 反向键索引
    4. 位图索引
    5. 基于函数的索引

    常用的是普通索引和唯一索引

    五、索引的使用:

    先创建一个学生表:

    create table Student
    (
      id        char(4)         not null,   -- 编号
      name      varchar2(30)    not null,   -- 姓名
      weight    number(4,1)     not null,   -- 体重
      height    number(3)       not null,   -- 身高
      birthday  date            not null,   -- 出生时间
      memo      varchar2(1000)      null,   -- 备注
      keyid     number(8)       not null   -- 记录编号,从序列SEQ_GIRL中获取。
    );
    alter table STUDENT add constraint ID_KEY primary key(id);

    1、创建索引:

    (1)普通索引语法::

    create index 索引名 on 表名(字段名1,字段名2,......,字段名n);

    在实际开发中,通常以IDX_打头,加表名和索引编号。例如为学生表表T_GIRL的姓名字段创建索引

    create index ID_KEY_1 on STUDENT(name);

    (2)唯一索引语法:

    create unique index 索引名 on 表名(字段名1,字段名2,......,字段名n);

    如果表中的列没有重复的值,是唯一的,就可以创建唯一索引,唯一索引的效率比普通索引要高很多。例如学生表表T_GIRL的keyid字段,其值是从序列SEQ_GIRL中获取的,肯定是个唯一的值,可以创建唯一索引。

    create unique index ID_KEY_1 on STUDENT(keyid);

    (3)主键是唯一索引语法:

    不要为表的主建创建索引,因为Oracle自动为表的主建字段创建唯一索引。

    2、删除索引:

    删除普通索引语法:

    drop index 索引名;

    删除主键索引语法:

    alter table 表名 drop constraint 主键名;

    示例:

    drop index ID_KEY_1;--删除普通索引
    alter table student drop constraint PK_GIRL;--删除主键或唯一索引

    3、修改索引

    (1)重建索引:重建索引可以减少硬盘碎片和提高数据库系统的性能

    语法:

    alter index 索引名 rebuild;

    示例:

    alter index ID_KEY_1 rebuild;

    (2)整理碎片:对索引的无用空间进行合并,减少硬盘碎片和提高数据库系统的性能。

    语法:

    alter index 索引名 coalesce;

    示例:

    alter index KEY_ID_1 coalesce;

    (3)修改索引名

    语法:

    alter index 索引名 rename to 新索引名;
    

    示例:

    alter index KEY_ID_1 rename to KEY_ID_2;

    (4)禁用索引:索引被禁用后,如果要启用,需要用rebuild重建。

    语法:

    alter index 索引名 unusable;
    

    示例:

    alter index KEY_ID_1 unusable;
    

    展开全文
  • Oracle索引建立原则  · 确定针对该表的操作是大量的查询操作还是大量的增删改操作。  · 尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。  · where语句中...
  • oracle 索引类型

    2019-04-20 01:04:19
    oracle学习笔记--三大索引.zip,oracle学习笔记--三大索引.pptx
  • 表可以按range、hash、list分区,表分区后,其上的索引和普通表上的索引有所不同,oracle对于分区表上的索引分为2类,即局部索引和全局索引,下面分别对这2种索引的特点和局限性做个总结。局部索引local index1.局部...
  • oracle索引

    2018-09-08 15:20:52
    oracle索引,非常适合初学者,介绍索引的分类,如何创建,修改等
  • 主要给大家介绍了关于Oracle使用强制索引的方法与注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
  • 昨天在QQ群里讨论一个SQL优化的问题,语句大致如下: select A,min(B) from table group by A;--A,B都没有not null约束,A列无空值,B列有空值。...Btree索引是不存储空值的,这个是所有使用Btree索引的数据库的共同
  • oracle索引使用

    千次阅读 2019-04-20 07:20:46
    一、索引 1. 概述: 数据库对象之一 索引用于提高查询效率 索引的内建工作对用户是透明的,由数据库自行维护,我们只需要指定是否添加索引。...2.索引使用 (1) 单一索引 --创建索引 CREATE INDEX idx_emp_e...

    一、索引

    1. 概述:
    数据库对象之一
    索引用于提高查询效率
    索引的内建工作对用户是透明的,由数据库自行维护,我们只需要指定是否添加索引。
    索引是为表中字段添加的。当一个字段经常出现在WHERE中作为过滤条件,或 ORDER BY 或 DISTINCT中时可以为其添加索引以提高查询效率。
     

    2.索引的使用

    (1) 单一索引

    复制代码

    --创建索引
    CREATE INDEX idx_emp_ename_ning
    ON emp(ename)
    
    SELECT ename,job,deptno 
    FROM emp_ning
    WHERE ename='惜月'

    复制代码

    (2) 复合索引:基于多个列的索引

    CREATE INDEX idx_emp_job_sal_ning ON emp_ning(job,sal)
    
    SELECT  empno,ename,sal,job FROM emp_ning ORDER BY job,sal

    (3)创建基于函数的索引

    --在emp表的ename列上执行大小写无关的搜索
    CREATE INDEX emp_ename_upper_idx_ning ON emp_ning(UPPER(ename))
    
    SELECT * FROM emp_ning WHERE UPPER(ename)='惜月'

    (4) 修改和删除索引

    a.重建索引:如果经常在索引列上执行DML操作,需要定期重建索引
    ALTER INDEX idx_emp_ename_ning REBUILD
    
    b.删除索引
    DROP INDEX idx_emp_ename_ning

     

    二、结构化查询语言

    参考文档:https://www.cnblogs.com/pinnsvin/p/5528272.html

    结构化查询语言(sql)可以分为:

    a. 数据定义语言(DDL)

    b. 操纵语言(DML)

    c. 事物控制语言(TCL)

    d. 数据查询语言(DQL)

    e. 数据控制语言(DCL)

     

    1. 数据定义语言(DDL, Data Definition Language)

    DDL作用是增删该数据库对象

    语法:

    a. CREATE:创建数据库对象(数据库对象主要包括:用户、数据库、表、视图、存储过程、存储函数、触发器、索引等);

    复制代码

    CREATE TABLE employee_baobao(
      id NUMBER(4),
      name VARCHAR2(20) NOT NULL,
      gender CHAR(1) DEFAULT 'M',
      birth DATE,
      salary NUMBER(6,2),
      job VARCHAR2(30),
      deptno NUMBER(2)
    );

    复制代码

    b. ALTER:修改数据库对象;

    ALTER TABLE myemp_baobao
    ADD(
      hiredate DATE DEFAULT SYSDATE
    )
    DESC myemp_baobao

    b. DROP:删除数据库对象

    DROP TABLE employee_baobao

     

    2 . 数据查询语言(DQL,Data Query Language)

    主要是一些查询的sql语句。

    语法:

    select * from t1

     

    3.数据操纵语言(DML, Data Manipulation Language)

    主要是修改表中数据的一些sql语句。

    语法结构:

    a. INSERT 

    INSERT INTO myemp_baobao
      (id,name,job,salary)
    VALUES
      (1,'JACK','MANAGER',5000)

    b. UPDATE

    update t_f_prj set f_name = 'xxx' where pk_id = '123'

    c. DELETE 

    delete from t1 where pk_id = '123';

     

    4.数据控制语言(DCL, Data Control Language)

    主要是用来对数据库权限进行控制。由 GRANT 和 REVOKE 两个指令组成。

    a.DCL:控制用户的访问权限;

    b. GRANT:授权语句,对应的是REVOKE(撤销授权语句)。

    展开全文
  • Oracle索引建立原则

    千次阅读 2022-03-21 13:51:37
    数据库索引建立常用的规则如下: 1、表的主键、外键必须有索引; 2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引;4、经常出现在Where子句中的字段,特别是大表的字段,...
  • Oracle存储索引的数据结构是B*树。位图索引也是如此,仅仅只是是叶子节点不同B*数索引索引由根节点、分支节点和叶子节点组成。上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid。...
  • 一:索引基本概念 oracle提供了两种方式,从表中读取所有行(即全表扫描),或者通过ROWID一次读取一行;...当数据分散在表的多个数据块时,最好是不使用索引,而是使用全表扫描,执行全表扫描时,oracle使用多...
  • ORACLEV7以来缺省的设置应是”choose”,即如果对已分析的表查询的话选择CBO,否则选择RBO。如果该参数设为“rule”,则不论表是否分析过,一 概选用RBO,除非在语句中用hint强制。 其次,检查被索引的列或组合索引...
  • 经过几次排除,把问题范围缩小在索引上,首先在确定索引本身没有问题的前提下,考虑索引有没有被使用到,那么新的问题来了,怎么知道指定索引是否被启用。 判断索引是否被执行 1. 分析索引 即将索引至于监控状态下,...
  • forOracle的空间索引,如果能把oracle索引示例弄明白,那么对ArcSDE的索引问题应该非常好理解了。 在数据库系统中,索引是非常重要的一个对象,尤其是面对大型数据表时,索引能大大提高数据检索的速度。本节将介绍...
  • Oracle 索引详解(index)

    千次阅读 2021-09-17 09:11:07
    1 概述2 索引管理2.1 创建索引2.2 删除索引2.3 修改索引2.4 查询索引 3 索引类型3.1 B-Tree 平衡树索引3.2 bitmap 位图索引3.3 反向键索引3.4 基于函数索引 4 扩展4.1 走不走索引的情况 1 概述 1. 索引是...
  • oracle数据库索引失效

    2021-01-19 22:45:53
    但是如果是同样的sql如果在之前能够使用索引,那么现在使用不到索引,以下几种主要情况: 1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表) 2. 统计信息...
  • Oracle索引技术

    2018-09-26 15:35:28
    Oracle 索引技术,正确使用Oracle数据库的索引不仅可以实现良好的性能,更重要的是能够创造出可伸缩的数据库应用程序。本书在介绍各种类型索引的过程中,始终围绕性能这一主线,透彻分析了为Oracle数据库创建和优化...
  • oracle新建序列,SEQ_USER_Id.nextval 2、索引: mysql索引从0开始,Oracle从1开始。 3、分页, mysql: select * from user order by desc limit n ,m. 表示,从第n条数据开始查找,一共查找m条数据。 Oracle:...
  • oracle 索引的创建与使用

    千次阅读 2021-05-04 03:50:19
    什么是数据库索引在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。对于数据库来说,索引是一个必...
  • Oracle10g中context类型的全文索引也可以自动同步了。10g中新引入了2种同步的方式,现在有3种 1、ctx_ddl.sync_index2、sync(on commit)3、sync( every …) in parameter setting while creating index sync(on ...
  • 正在看的ORACLE教程是:Oracle数据库索引的维护。 本文只讨论Oracle中最常见的索引,即是B-tree索引。本文中涉及的数据库版本是Oracle8i。 一. 查看系统表中的用户索引Oracle中,SYSTEM表是安装数据库时自动建立...
  • Oracle中,索引基本分为以下几种:B*Tree索引,反向索引,降序索引,位图索引,函数索引,interMedia全文索引等,其中最常用的是B*Tree索引和Bitmap索引。(1)、与索引相关视图查询DBA_INDEXES视图可得到表中所有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 251,334
精华内容 100,533
关键字:

oracle索引的使用

友情链接: WhoIs.rar