`

Oracle中select语句使用索引情况测试

 
阅读更多

--看了不少Oracle中sql优化的文章,也介绍了很多不使用索引的情况,今天有空就测试了一下部分情况。 
--测试数据 
create table EMP 
( 
  EMPNO  VARCHAR2(10) not null primary key, 
  ENAME  VARCHAR2(10), 
  JOB    VARCHAR2(10), 
  MGR    VARCHAR2(10), 
  SAL    NUMBER(10), 
  DEPTNO NUMBER(10) 
)

create index I_DEPTNO on EMP (DEPTNO); 
create index I_JOB on EMP (JOB); 
create index I_MGR on EMP (MGR); 
create index I_SAL on EMP (SAL);

insert into emp values ('01','jacky','clerk','tom','1000','1'); 
insert into emp values ('02','tom','clerk','','2000','1'); 
insert into emp values ('03','jenny','sales','pretty','600','2'); 
insert into emp values ('04','pretty','sales','','800','2'); 
insert into emp values ('05','buddy','jishu','canndy','1000','3'); 
insert into emp values ('06','canndy','jishu','','1500','3'); 
insert into emp values ('07','biddy','clerk','','2000','1'); 
insert into emp values ('08','biddy','clerk','','2000','3'); 
commit;


--测试及结果: 
select * from emp where deptno = 1; 
--使用索引 
select * from emp where deptno = '1'; 
--使用索引(类型转换不影响索引使用)

select * from emp where deptno*2 = 2; 
--全表扫描(索引列使用函数时不使用索引) 
select * from emp where deptno = 2/2; 
--使用索引

select * from emp where ename = 'tom' and deptno = 1; 
--使用索引 
select * from emp where ename = 'tom' or deptno = 1; 
--全表扫描 (当or条件列都存在索引时会使用索引)

select * from emp where sal != '0'; 
--全表扫描(!=,null,not null都不使用索引)

select * from emp where mgr = 'tom'; 
--使用索引(虽然mgr列存在null值还是使用了索引)

select * from emp where deptno in ('1','2','3'); 
--使用索引(in使用索引)

select * from emp where job like 'c%'; 
--使用索引(%在第一个字符时不使用索引)

select * from emp where deptno between 1 and 2; 
--使用索引

--补充一个不使用索引的情况:多列创建索引时,索引第一列不在where中则不使用索引。

分享到:
评论

相关推荐

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率.pdf

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率 在Oracle中,SQL语句的执行顺序是非常重要的。了解了SQL语句的执行顺序,我们可以更好地优化SQL语句,提高查询效率。下面我们将详细介绍ORACLE-Select语句...

    Oracle 索引练习语句程序

    根据提供的文件信息,我们可以归纳出一系列关于Oracle数据库中索引使用的知识点。这些知识点不仅包括了基本的索引创建与查询,还涉及到了分区表及其索引的管理。 ### Oracle索引的基本概念 #### 1. 创建索引 索引...

    oracle的SQL语句的一些经验总结

    1. **基本查询**:SQL的基础是SELECT语句,用于从表中提取数据。例如,`SELECT column1, column2 FROM table_name;`用于获取指定列的数据。理解如何使用WHERE子句进行条件过滤,如`WHERE column = value`,以及如何...

    Oracle中SQL语句执行效率的查找与解决

    在Oracle中,SQL语句执行效率低下通常表现为资源过度消耗,这可能包括CPU时间、内存使用、磁盘I/O等。具体分析可从以下几个方面入手: 1. **响应时间不达标**:当查询响应时间超出预期时,应检查SQL语句是否涉及...

    oracle不走索引可能原因.docx

    应先分析查询计划,理解Oracle优化器的选择,并进行性能测试,确保使用索引能带来显著的性能提升。在某些情况下,优化SQL语句结构、调整索引策略,或者利用分区、索引组织表等技术,可能会比单纯依赖索引更有效。...

    oracle常用SQL语句(汇总版).docx

    INSERT 语句还可以在插入数据时使用 SELECT 语句来从其他表中获取数据: INSERT INTO 表名(字段名 1, 字段名 2, ……)SELECT(字段名 1, 字段名 2, ……)FROM 另一个表名; 在插入字符串类型的字段时,必须使用...

    ORACLE常用SQL语句大全.pdf

    本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 * 创建数据库:CREATE ...

    自动生成oracle数据库表分析语句

    3. **执行生成的语句**:生成的SQL语句可以直接复制并在Oracle环境中执行,或者将其保存到一个文件中批量执行。 #### 注意事项 - 在执行`ANALYZE TABLE`命令时,可能会消耗大量资源,特别是在大型表上。因此,在...

    Oracle 9i中如何监视索引的使用情况

    在Oracle 9i中,通过`ALTER INDEX`命令可以开启或关闭对索引使用情况的监控。要开始监控某个索引,可以使用如下命令: ```sql ALTER INDEX index_name MONITORING USAGE; ``` 若要停止监控,使用: ```sql ALTER ...

    Oracle和MySQL语句区别.doc

    Oracle和MySQL语句存在许多不同之处,包括数据类型、Select语句、Join语句、Subquery语句、索引、触发器和存储过程等。但是,两者的基本原理和架构都是基于SQL语言的,因此学习和使用Oracle或MySQL都需要对SQL语言有...

    oracle索引被限制的一些情况

    在 SQL 语句中使用 NULL 会有很多的麻烦。因此,建议开发人员在建表时,把需要索引的列设成 NOT NULL。如果被索引的列在某些行中存在 NULL 值,就不会使用这个索引(除非索引是一个位图索引)。 限制3:使用函数 ...

    oracle常用sql语句大全 注释完整 放心使用

    1. **数据查询(SELECT语句)**: - `SELECT * FROM table_name;`:查询表table_name中的所有列。 - `SELECT column1, column2 FROM table_name;`:查询指定列。 - `SELECT DISTINCT column FROM table;`:去除...

    oracle常用性能分析语句执行情况等语句总结

    Oracle数据库是世界上最广泛使用的数据库管理系统之一,特别是在企业级应用中,其性能优化和问题排查显得尤为重要。本篇文章将总结一些常用的Oracle性能分析和查询语句,帮助管理员了解系统运行状况,定位并解决性能...

    ORACLE经典常用语句总结

    在IT领域,尤其是在数据库管理与开发中,Oracle作为一款广泛使用的数据库管理系统,其经典常用的SQL语句对于数据库管理员(DBA)以及开发人员而言至关重要。本文将深入解析Oracle中的关键SQL语句,涵盖表约束、索引...

    oracle的索引学习

    Oracle数据库中的索引是提升查询性能的关键工具,它允许数据库快速定位和检索数据。本篇文章将深入探讨Oracle索引的学习,重点关注索引的原理、类型、优缺点以及如何使用和分析执行计划。 首先,理解索引的基本概念...

    oracle索引与分区索引介绍

    Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建方法、维护操作等方面的知识...

    Oracle_基本建表语句-操作语句

    - **查询数据**:使用SELECT语句从表中检索数据,是数据库操作中最常用的部分。 ```sql SELECT * FROM 表名; SELECT 列1, 列2 FROM 表名 WHERE 条件; ``` 以上就是Oracle中关于基本建表语句及操作的主要内容。通过...

    ORACLE数据库SQL语句编写优化总结

    3. 尽量避免在SELECT子句中使用“*”,而应该具体指定需要查询的字段。 4. 减少对数据库的访问次数,避免不必要的重复查询。 5. 使用DECODE函数,可以减少处理时间。 6. 整合简单、无关联的数据库访问可以减少I/O...

    mysql和oracle和sql语句

    在文件名中提到的"oracle常用sql语句.txt"可能包含Oracle的一些常见操作,如`SELECT`用于查询,`INSERT INTO`用于插入数据,`UPDATE`用于修改记录,`DELETE FROM`用于删除记录,以及`ALTER TABLE`用于修改表结构等。...

Global site tag (gtag.js) - Google Analytics