精华内容
下载资源
问答
  • oracle 查看索引有效

    2021-05-01 07:53:14
    SQL> alter index aa_index01 monitoring usage; Index altered SQL> select * from aa; ID NAME BORN ---------- -------------------- --------...表明該查詢被數據庫使用了,若索引在監控周期中被忽略,則該值為NO.

    SQL> alter index aa_index01 monitoring usage;

    Index altered

    SQL> select * from aa;

    ID NAME                 BORN

    ---------- -------------------- -----------

    1 lishaoqing           2011/10/1

    1 lishaoqing           2011/11/1

    1 lishaoqing           2011/12/1

    1 lishaoqing           2012/1/1

    SQL> alter index aa_index01 nomonitoring usage;

    Index altered

    SQL> select * from v$object_usage where index_name='aa_index01';

    INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

    ------------------------------ ------------------------------ ---------- ---- ------------------- -------------------

    SQL> select * from v$object_usage where index_name='AA_INDEX01';

    INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

    ------------------------------ ------------------------------ ---------- ---- ------------------- -------------------

    AA_INDEX01                     AA                             NO         NO   02/01/2012 09:21:25 02/01/2012 09:21:42

    如果USED列中放的是YES值,表明該查詢被數據庫使用了,若索引在監控周期中被忽略,則該值為NO.

    展开全文
  • oracle查询索引(oracle查看表索引)

    千次阅读 2021-04-30 10:02:20
    07-24 11:01:26共10个回答选中表右键View然后查看index通过PL/SQL可以直接查看某表是否索引,通过SQL查询selectstatus,T.*fromuser_indexesTwheretable_name='表名'oracle查看有效索引是这个:selectstatus,T.*from...

    oracle查询索引(oracle查看表索引)

    2020-07-24 11:01:26

    共10个回答

    选中表右键View然后查看index

    7fb182b1cf2ddc0b88ebaec41052d0a9.png

    通过PL/SQL可以直接查看某表是否建索引,通过SQL查询selectstatus,T.*fromuser_indexesTwheretable_name='表名'oracle查看有效索引是这个:selectstatus,T.*fromuser_indexesT,wheretable_name='TABLE1'最好弄个图像界面软件,就能知道,比如:PL/SQLDeveloper数据库中的失效的索引、索引分区、子分区:如果不是失效的索引,那么都是有效的.

    1e70c980055ba7d735399f5602a30f8d.png

    一、查看和建立索引select*fromuser_indexeswheretable_name='student'createindexi_student_numonstudent(num)二、使用索引的注意点①类型匹配若student中num

    b97d8aa5d1e47926d194c8734ee1d365.png

    oracle对于数据库中的表信息,存储在系统表中.查询已创建好的表索引,可通过相应的sql语句到相应的表中进行快捷的查询:1.根据表名,查询一张表的索引select*

    3458dfc798ddf09e670bf7e1b3c39514.png

    1、通过pl/sql可以直接查看某表是否建索引2、通过sql查询selectstatus,t.*fromuser_indexestwheretable_name='表名'

    b4b02bed9dc6f884761812922d989dbf.png

    dba权限的账号使用:selectS.index_namefromdba_indexesswheres.table_name=表名;--查出索引名然后根据索引名去DBA_IND_COLUMNS视图中查看相应字段:SELECTs.column_nameFROMDBA_IND_COLUMNSSWHERES.index_name=索引名如果是该表所有者的账号,把相应视图名做下列修改:dba_indexes=》user_indexesDBA_IND_COLUMNS=》user_ind_columns

    0220024e02869f5266900b08fdf9e9e7.png

    有两种办法:(1)视图dba_constraints,这张表中有所有的表的约束,拥有唯一约束的字段就拥有唯一索引,其中Constraint_type的值应该是U,不过值是R的表示主键,这个也存在唯一索引,不知道你要不要找这种,所以个人认为在这张表内能找到.(当然,还有相关的all视图和user视图)(2)视图dba_indexes,这里的index_type应该也能查到唯一索引,不过具体的字段值是什么我忘记了,可能要自己找一找.

    c7c109d6c1ad989ffe6a47a93755ee57.png

    1.根据表名,查询一张表的索引:select*fromuser_indexeswheretable_name=upper('表名').2.根据索引号,查询表索引字段:select*fromuser_ind_columnswhere

    9e8f5f7b83c2d56f174a01034b5a83ad.png

    user是oracle中一个表空间的名字.可用如下语句查询哪些索引使用了user表空间.selectindex_name,tablespace_namefromdba_indexeswheretablespace_name='user';

    aee30c67a23a795328420a2057ed9d3e.png

    通过user_indexes视图可以查看.比如查看emp表有没有索引SQL>selectindex_namefromuser_indexeswheretable_name='EMP';INDEX_NAME------------------------------PK_EMPIDX_TEXT

    0c74faca81838865862020744f2313ab.png

    展开全文
  • 第一步: explain plan for select * from T_USER where OPEN_ID='12345'; 第二步: select * from table(dbms_xplan.display);

    第一步:

    explain plan for  select * from T_USER where OPEN_ID='12345';
    

    第二步:

     

     select * from table(dbms_xplan.display);
    展开全文
  • oracle 索引失效的原因

    2021-05-08 05:19:36
    引起oracle索引失效的原因很多: 1、在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了。 创建函数索引方式: 表dept,有col_1,col_2,现在对col_1做upper函数索引 这样...

    引起oracle索引失效的原因很多: 1、在索引列上使用函数。如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了。 创建函数索引方式: 表dept,有col_1,col_2,现在对col_1做upper函数索引 这样就行了 CREATE INDEX index_name ON dept(upper(col_1)); 函数索引是基于代价的优化方式-CBO,(在Oracle8及以后的版本,Oracle强列推荐用CBO的方式,而非RBO),所以表必须经过analyze才可以使用,或者使用hints才可以 2、新建的表还没来得及生成统计信息,分析一下就好了 3、基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引。 4、使用<>、not in 、not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS。 5、单独的>、

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    索引失效

    1) 没有查询条件,或者查询条件没有建立索引

    2) 在查询条件上没有使用引导列

    3) 查询的数量是大表的大部分,应该是30%以上。

    4) 索引本身失效

    5) 查询条件使用函数在索引列上(见12)

    6) 对小表查询

    7) 提示不使用索引

    8) 统计数据不真实

    9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。

    10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),

    但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.

    错误的例子:select * from test where tu_mdn=13333333333;

    正确的例子:select * from test where tu_mdn='13333333333';

    11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)

    错误的例子:select * from test where id-1=9;

    正确的例子:select * from test where id=10;

    12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.

    错误的例子:select * from test where round(id)=10;

    说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引,

    create index test_id_fbi_idx on test(round(id));

    然后 select * from test where round(id)=10; 这时函数索引起作用了 1,<> 2,单独的>,

    3,like "%_" 百分号在前.

    4,表没分析.

    5,单独引用复合索引里非第一位置的索引列.

    6,字符型字段为数字时在where条件里不添加引号.

    7,对索引列进行运算.需要建立函数索引.

    8,not in ,not exist.

    9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。

    10, 索引失效。

    11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上

    12,有时都考虑到了 但就是不走索引,drop了从建试试在

    13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走

    14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,

    in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,

    其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),

    或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),

    以上两种情况索引都会走。其他情况不会走。

    展开全文
  • Oracle建立索引的目的是为了避免全表扫描,提高查询的效率。但是有些情况下,即使建立了索引,但是执行写出来的查询还是很慢,然后通过执行计划会发现是索引失效导致的(不走索引,走全表扫描)。所以需要了解一下有...
  • 我有一个表Blah(纬度float,经度float,create_time date,owner_id int,…..)我的代码只能执行一次查询select *from Blahwhere latitude < l1 and latitude > l2and longitude < ll1 and longitude > ll2...
  • Oracle函数索引

    2021-05-01 04:45:27
    使用Oracle函数索引,无疑是提高查询效率的有效方法之一。下面就为您详细介绍函数索引的使用方法,希望对您能有所帮助。谈到任何对列的操作都可能导致全表扫描,例如:select*fromempwheresubstr(ename,1,2)=’SM’;...
  • 1) 没有查询条件,或者查询条件没有建立索引2) 在查询条件上没有使用引导列3) 查询的数量是大表的大部分,应该是30%以上。4) 索引本身失效5) 查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*...
  • Oracle索引建立原则确定针对该表的操作是大量的查询操作还是大量的增删改操作。尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。where语句中不得不对查询列采用函数...
  • Oracle查询时候使index索引失效的限制条件昨天,由于最近的项目需要进入到测试人员进行测试的阶段。因此,自己搭建好了测试环境---进行了测试。但是,奇怪的事情就发生了。以前在我自己本地开发的环境的时候却没有...
  • 朱勇摘要:本文对Oracle数据库的查询技术进行分析与研究,通过索引优化查询技术达到提高查询速度的目的。在对Oracle數据表创建合理的索引后,通过对优化SQL语句,提升了数据库查询效率。关键字:Oracle数据库索引 ...
  • ORA-01502: index 'TEST.SYS_C0033286' or partition of such index is in unusable state处理:从报错的内容可以看出,是因为索引状态为UNUSABLE导致的。1.先查看下这张表有多少数据(查询结果有20...
  • 每隔一段时间,我们就需要在Oracle中重建索引,因为随着时间的推移,索引变得支离破碎。这会导致其性能(以及扩展)导致数据库查询的性能下降。因此,不时地重建索引会非常有益。话虽如此,索引不应该经常重建,因为这...
  • oracle强制索引失效

    2021-05-04 02:39:34
    如果两个或以上索引具有相同的等级,你可以强制命令ORACLE优化器使用其中的一个(通过它,检索出的记录数量少) .举例:SELECT ENAMEFROM EMPWHERE EMPNO = 7935AND DEPTNO + 0 = 10 /*DEPTNO上的索引将失效*/AND EMP_...
  • ORACLE索引

    2021-05-05 07:38:05
    今天整理ORACLE索引ORACLE索引有很多类型,包括有: B树索引(默认类型) 位图索引 HASH索引 索引组织表索引 反转键(reverse key)索引 基于函数的索引 分区索引(本地和全局索引) 位图连接索引 今天主要针对oracle最...
  • oracle 索引失效原因

    2020-12-20 05:19:26
    1) 没有查询条件,或者查询条件没有建立索引2) 在查询条件上没有使用引导列3) 查询的数量是大表的大部分,应该是30%以上。4) 索引本身失效5) 查询条件使用函数在索引列上,或者对索引列进行运算,运算包括(+,-,*...
  • 一、索引简介1、索引相当于目录2、索引是通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索...5、Oracle支持多种类型的索引,可以按列的多少、索引是否唯一和索引数据的组织形式对索引进行分类...
  • ♣答案部分一般而言,极少需要重建B树索引,基本原因是B树索引很大程度上可以自我管理或自我平衡。认为需要重建索引的最常见理由有:lB-Tree索引随着时间的推移变得不平衡(错误的认识);l索引碎片在不断增加,但是...
  • ORACLE索引提高效率

    2021-05-06 07:27:52
    ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证.除了那些LONG或LONG RAW数.....
  • 索引无效原因最近遇到一个Oracle SQL语句的性能问题,修改功能之前的运行时间平均为0.3s,可是添加新功能后,时间达到了4~5s。虽然几张表的数据量都比较大(都在百万级以上),但是也都有正确创建索引,不知道到底慢在...
  • 如果该唯一索引有多个列组成(即组合索引),则至少要有组合索引的引导列参与到该查询中,如创建一个索引:create index idx_test on emp(ename, deptno, loc)。则select ename from emp where ename ...
  • Oracle 全文索引

    2021-03-21 18:25:19
    缘由 我们经常需要对表的内容进行模糊查询,在数据量不算很大的情况下,使用起来还是没什么问题,...Oracle的全文索引Oracle9i 开始支持)可能会对你有帮助。 Oracle全文索引的基本知识 一、历史背景 Oracle数据库的
  • 11我们知道索引列如果出现null值会导致索引失效。具体情况如下:表中数据如下: 可见storeid列有null值。当执行查询语句:select * from demo where storeid= '10';时我们通过plsql的sql分析(F5触发)可以看到触发全...
  • NAME = CONS.TABLE_NAME AND I.COLUMN_NAME IN (CNAME1, CNAME2, CNAME3, CNAME4, CNAME5, CNAME6, CNAME7, CNAME8) AND I.COLUMN_POSITION ) / 这就是微学网-程序员之家为你提供的"Oracle中检查外键是否索引的SQL...
  • 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。建议原则:1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个...
  • oracle之bitmap索引

    2021-05-08 07:20:22
    oracle常见的索引是BTree索引和Bitmap索引。BTree索引特点:默认索引适合大量增删改查不能用or操作符适合高基数的列(即唯一值多)创建sql:create index lie_idx1 on table(liename);Bitmap索引特点:做update代价...
  • oracle 指定索引

    2021-05-02 07:43:03
    oracle指定索引语法:/*+index(t ind_name)*/“t”: 为表的别名, 如果查询语句中有表别名,这里必须使用表别名, 如果没有表别名,则直接使用表名“ind_name”: 要使用的索引名称。需要将指定索引的语句写在查询....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 89,026
精华内容 35,610
关键字:

oracle查询索引是否生效