当前位置:  数据库>oracle

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

    来源: 互联网  发布时间:2017-04-13

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

--看了不少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导出sql语句的结果集和保存执行的sql语句(深入分析)
  • oracle用什么SQL语句判断表存不存在
  • 请问怎么用jsp语句删除oracle中的一条记录?
  • Oracle中SQL语句连接字符串的符号使用介绍
  • Oracle用什么语句查询字段?
  • 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊?
  • 请问在 Linux 下如何用代码实现连接oracle数据库 并 执行 SQL 语句?
  • Oracle 9i轻松取得建表和索引的DDL语句
  • Oracle的SQL语句中如何处理‘&’符号
  • 关于Oracle中的sql语句的疑问,向大家请教。
  • Oracle Sql语句长度限制问题及解决
  • Oracle9i取得建表和索引的DDL语句
  • Oracle 中文字段进行排序的sql语句
  • oracle数据库添加或删除一列的sql语句
  • Oracle中查询本月星期5的所有日期列表的语句
  • Oracle中备份表的简单sql命令语句
  • oracle中误删除表后恢复语句(FLASHBACK)
  • Oracle判断指定列是否全部为数字的sql语句
  • jsp中在oracle中查询日期类型时sql语句该怎么写啊?
  • Oracle 常用的SQL语句
  • Oracle与Mysql主键、索引及分页的区别小结
  • 从Oracle的约束到索引
  • oracle10g全文索引自动同步语句使用方法
  • Oracle建立二进制文件索引的方法
  • 在Oracle 10g中如何获得索引的专家建议
  • Oracle全文索引设置
  • 用Oracle 9i全索引扫描快速访问数据
  • Oracle中如何把表和索引放在不同的表空间里
  • Oracle索引存储关系到数据库的运行效率
  • Oracle索引聚簇表的数据加载
  • 在Oracle中监控和跟踪索引使用情况
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 8x监控sysdba角色用户登陆情况
  • oracle中不知道某数据库用户密码的情况下也能登陆
  • 查看Oracle CPU情况
  • Oracle10g使用sql获得ADDM报告以及利用ADDM监控表的dml情况
  • Oracle 查看表空间的大小及使用情况sql语句
  • oracle查询锁表与解锁情况提供解决方案
  • [Oracle] 解析在没有备份的情况下undo损坏怎么办
  • 有关Oracle数据库的备份情况
  • Oracle中如何把表和索引放在不同的表空间里 iis7站长之家
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3