精华内容
下载资源
问答
  • 说明索引使用like模糊查询时未起作用。不过好像like '%z%';写成like 'z%'索引就会起作用。 SQL> select * from v$object_usage; INDEX_NAME TABLE_NAME MONITORING USED START_MONITORING END_MONITORING -----...

    SQL> conn tudou/111;

    //插入测试数据

    SQL> insert into temp1 values('z壮','23');

    SQL> insert into temp1 values('z','25');

    SQL> insert into temp1 values('a','28');

    SQL> insert into temp1 values('奇才','29');

    SQL> insert into temp1 values('才子、','12');

    SQL> insert into temp1 values('二飘落','14');

    SQL> insert into temp1 values('脾用','18');

    SQL> select * from temp1;

    NAME                AGE

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

    土土                22

    z壮                 23

    z                   25

    a                   28

    奇才                29

    才子、              12

    二飘落              14

    脾用                18

    SQL> insert into temp1 values('fdffs','18');

    SQL> insert into temp1 values('ppppp','18');

    SQL> insert into temp1 values('大规模 ','13');

    SQL> select * from temp1;

    NAME                AGE

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

    土土                22

    z壮                 23

    z                   25

    a                   28

    奇才                29

    才子、              12

    二飘落              14

    脾用                18

    fdffs               18

    ppppp               18

    大规模              13

    //创建索引,索引建立在name之上。

    SQL> create index ix_name on temp1(name);

    Index created

    //监视索引

    SQL> alter index ix_name monitoring usage;

    Index altered

    //查看索引状态,发现USED这列显示为no,说明索引尚未使用。

    SQL> select * from v$object_usage;

    INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

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

    IX_NAME                        TEMP1                          YES        NO   02/21/2011 11:44:26

    //查询字段,模糊查询的字段正是建立索引的字段。

    SQL> select * from temp1 where name like '%z%';

    NAME                AGE

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

    z壮                 23

    z                   25

    //再次查询索引状态,发现used列还是no。说明索引在使用like模糊查询时未起作用。不过好像like '%z%';写成like 'z%'索引就会起作用。

    SQL> select * from v$object_usage;

    INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

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

    IX_NAME                        TEMP1                          YES        NO   02/21/2011 11:44:26

    //不要紧,我们这次用精确查询

    SQL> select name from temp1;

    NAME

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

    土土

    z壮

    z

    a

    奇才

    才子、

    二飘落

    脾用

    fdffs

    ppppp

    大规模

    11 rows selected

    //再次查询看发现索引还是不起作用,这说明直接查询字段名称索引不起作用。

    SQL> select * from v$object_usage;

    INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING

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

    IX_NAME                        TEMP1                          YES        NO   02/21/2011 11:44:26

    //最后我们用条件查询

    SQL> select * from temp1 where name ='a';

    NAME                AGE

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

    a                   28

    //OK,索引在条件查询时起作用了。这时索引才真正发挥它的作用。

    SQL> select * from v$object_usage; INDEX_NAME                     TABLE_NAME                     MONITORING USED START_MONITORING    END_MONITORING ------------------------------ ------------------------------ ---------- ---- ------------------- ------------------- IX_NAME                        TEMP1                          YES        YES  02/21/2011 11:44:26

    展开全文
  • Oracle中的索引详解

    2021-05-01 05:42:13
    5、 Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引 6、 语法:CREATE INDEX index ON table (column[, column]...); 7、 B-tree结构(非bitmap): [一]了解索引的工作原理: 表:emp 目标:查询...

    【IT168 技术文档】

    一、 ROWID的概念

    存储了row在数据文件中的具体位置:64位编码的数据,A-Z, a-z, 0-9, +, 和 /,

    row在数据块中的存储方式

    SELECT ROWID, last_name FROM hr.employees WHERE department_id = 20;

    比如:OOOOOOFFFBBBBBBRRR

    OOOOOO:data object number, 对应dba_objects.data_object_id

    FFF:file#, 对应v$datafile.file#

    BBBBBB:block#

    RRR:row#

    Dbms_rowid包

    SELECT dbms_rowid.rowid_block_number('AAAGFqAABAAAIWEAAA') from dual;

    具体到特定的物理文件

    二、 索引的概念

    1、 类似书的目录结构

    2、 Oracle 的“索引”对象,与表关联的可选对象,提高SQL查询语句的速度

    3、 索引直接指向包含所查询值的行的位置,减少磁盘I/O

    4、 与所索引的表是相互独立的物理结构

    5、 Oracle 自动使用并维护索引,插入、删除、更新表后,自动更新索引

    6、 语法:CREATE INDEX index ON table (column[, column]...);

    7、 B-tree结构(非bitmap):

    [一]了解索引的工作原理:

    表:emp

    ff8635403ef406d0e0463321a3c6201d.png

    目标:查询Frank的工资salary

    建立索引:create index emp_name_idx on emp(name);

    1865943d93e789542a33e759de15fee1.png

    9720f33c74f5e33ca48256c2715a0766.png

    [试验]测试索引的作用:

    1. 运行/rdbms/admin/utlxplan 脚本

    2. 建立测试表

    create table t as select * from dba_objects;

    insert into t select * from t;

    create table indextable

    as select rownum id,owner,object_name,subobject_name,

    object_id,data_object_id,object_type,created

    from t;

    3. set autotrace trace explain

    4. set timing on

    5. 分析表,可以得到cost

    6. 查询 object_name=’DBA_INDEXES’

    7. 在object_name列上建立索引

    8. 再查询

    [思考]索引的代价:

    插入,更新

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

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

    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

    展开全文
  • 例子:Where子句中有“!=”将不使用索引select account_name from test where amount !... 0 (使用)Where条件中对字段增加处理函数将不使用该列的索引select * from emp where to_char(hire_date,'...

    例子:

    Where子句中有“!=”将不使用索引

    select account_name from test where amount != 0  (不使用)

    select account_name from test where amount > 0  (使用)

    Where条件中对字段增加处理函数将不使用该列的索引

    select * from emp where to_char(hire_date,'yyyymmdd')='20080411' (不使用)

    select * from emp where hire_date = to_char('20080411','yyyymmdd') (使用)

    避免在索引列上使用IS NULL和 IS NOT NULL

    select * from emp where dept_code is not null  (使用)

    select * from emp where dept_code is null  (不使用)

    select * from emp where dept_code > 0  (使用)

    通配符% 的使用

    select * from emp where name like '%A'  (不使用索引) (反向索引时会使用索引)

    select * from emp where name like 'A%'  (使用索引)

    删除掉表中重复记录的最有效的语句:

    DELETE  FROM  EMP E  WHERE  E.ROWID > (SELECT MIN(X.ROWID) FROM  EMP X  WHERE  X.EMP_NO = E.EMP_NO);

    展开全文
  • Select *FROM dba_ind_columnsWhere index_owner='TEST73' AND table_name=upper('tx_log_t')可以查询数据库的表上面的索引字段。参考博文:Question: I added an index hint in my query, but the hint is being ...
  • 本篇文章给大家带来的内容是关于oracle使用索引和不使用索引时的性能对比,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。首先准备一张百万条数据的表,这样分析数据差距更形象!下面用分页表数据...
  • @PersistenceContextEntityManager em;public List findResultList(String column1, String column2) {String sql = "select /*+INDEX(t INDEX_NAME)*/ t.* from table_name t where t.column_name1 = :column1 and...
  • ORACLE全文索引的创建查询实例1.启用ctxsys的用户(可使用ORACLE 管理控制台去启用)2.在ctxsys用户下给ctx_cx用户赋权限grant execute on ctx_ddl to ctx_cx;3. 选择中文词法分析器,ctx_cx下执行exec ctx_ddl.create...
  • 我有一个表Blah(纬度float,经度float,create_time date,owner_id int,…..)我的代码只能执行一次查询select *from Blahwhere latitude < l1 and latitude > l2and longitude < ll1 and longitude > ll2...
  • 复合索引的第一列一定要出现在WHERE子句中。一.like "%_" 百分号在前.二.WHERE中单独引用复合索引里第一位置的索引列,并且SELECT、GROUP BY等子句中包含非复合索引列例句:用不到索引SELECTCORP.BATCHCODE, CORP....
  • 准确地判断在什么地方需要使用索引是困难的,使用索引有利于调节检索速度。 当建立一个索引时,必须指定用于跟踪的表名以及一个或多个表列。一旦建立了索引,在用户表中建立、更改和删除数据库时, Oracle就自动地...
  • 可能会出现一些意料之外的异常:然后查询日志可能会告诉你插入数据的时候触发了某个表的唯一约束等,如果这个项目是你自己参与开发的还好,但如果是其他第三方公司开发的大系统,里面的索引一大堆,你知道索引名,...
  • 索引命名规范:普通索引最好i_...2.查询索引oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面,其中:user_indexes 系统视图存放的是索引的名称以及该索引是否是唯一索引等信息,user_ind_co...
  • 当前位置:我的异常网» 数据库»Oracle优化全攻略三(Oracle 怎么使用索引)Oracle优化全攻略三(Oracle 怎么使用索引)www.myexceptions.net网友分享于:2013-09-20浏览:39次Oracle优化全攻略三(Oracle 如何使用索引)...
  • 查询用户的索引select index_name,table_name,tablespace_name,index_type,uniqueness ,statusfrom dba_indexes where owner='SCOTT';查询用户的索引列select index_name,table_name,column_name,index_owner,table_...
  • Oracle时间索引使用

    2021-05-01 01:04:04
    Oracle中我们经常使用Date字段类型记录日期和时间,有的时候还在这个字段上建立索引。然后通过Java程序访问数据库的时候,我们很自然的类似这样使用:select * from table where endDate>? and endDate,然后通过...
  • 如果一个函数(function)或表达式(expression)使用了一个表的一列或多 列,则用户可以依据这些函数或表达式为表建立索引,这样的索引被称为函 数索引(Function-Based Index)。函数索引能够计算出函数或表达式的, 并...
  • Oracle使用索引的好处

    2021-05-01 07:31:29
    Oracle使用索引的好处Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则...
  • 什么是数据库索引在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。对于数据库来说,索引是一个必...
  • SET HEAD ON SET TIMI ON http://blog.itpub.net/29254281/viewspace-1067050/ 相对于索引监控,不仅可以看到索引是否使用 更可以看到使用索引的步骤的数量,十分直观 来自 “ ITPUB博客 ” ,链接:...
  • 朱勇摘要:本文对Oracle数据库的查询技术进行分析与研究,通过索引优化查询技术达到提高查询速度的目的。...Oracle数据库使用SQL语言进行数据的增删改查等操作,查询效率已成为影响数据库性能的...
  • Oracle函数索引

    2021-05-01 04:45:27
    使用Oracle函数索引,无疑是提高查询效率的有效方法之一。下面就为您详细介绍函数索引使用方法,希望对您能有所帮助。谈到任何对列的操作都可能导致全表扫描,例如:select*fromempwheresubstr(ename,1,2)=’SM’;...
  • Oracle索引使用规则

    2021-05-05 03:40:17
    Single column 单行索引 Concatenated 多行索引 Unique 唯一索引 NonUnique 非唯一索引 Function-based函数索引 Domain 域索引 物理上: Partitioned 分区索引 NonPartitioned 非分区索引欢迎进入Oracle社区论坛,...
  • oracle 禁用索引

    2021-05-02 05:52:27
    同步数据的时候 有索引会比较慢 可以暂时禁用索引--禁用索引ALTER INDEX PK_T_AUTH_USERROLE_ID UNUSABLE;--恢复索引ALTER INDEX UK_T_AUTH_USER_EMP_CODE REBUILD;--查看索引状态select status from user_indexes ...
  • 二、修改索引:alter index 索引名 rename to 新索引名三、删除索引:drop index 索引名四、查看索引:<1>.查看索引个数和类别select * from user_indexes where table_name='表名' ;<2>...
  • 当where子句对某一列使用函数时,除非利用这个简单的技术强制索引,否则Oracle优化器不能在查询使用索引。通常情况下,如果在WHERE子句中不使用诸如UPPER、REPLACE 或SUBSTRD等函数,就不能对指定列建立特定的条件...
  • Oracle 配置参数查询语句Sql代码 SELECTNAME,VALUEFROMv$parameterWHERENAMEIN('sga_max_size','db_cache_size','shared_pool_size','shared_pool_reserved_size','large_pool_size','java_pool_size','db_block_...
  • Oracle建立索引的目的是为了避免全表扫描,提高查询的效率。但是有些情况下,即使建立了索引,但是执行写出来的查询还是很慢,然后通过执行计划会发现是索引失效导致的(不走索引,走全表扫描)。所以需要了解一下有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 242,520
精华内容 97,008
关键字:

oracle使用索引查询