oracle数据库中索引会失效的几种情况

创建Oracle 索引的目的是为了避免全表扫描数据,提高查询效率,但是如果sql语句写的不好致使索引失效,反而会影响数据查询效率。以下几种情况就会导致索引失效:

1. 没有 WHERE 子句
众所周知,添加索引的字段必需要在where条件后适当使用才会生效,如果连查询条件都没有,那肯定不会用到索引的。

2. 使用 IS NULL 和 IS NOT NULL
select … from emp where colnum is null; colnum列的索引会失效
3. WHERE 子句中使用函数
如果没有使用基于函数的索引,那么 where 子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。例如:
select * from staff where trunc(birthdate) = ‘01-MAY-82’;
但是把函数应用在条件上,索引是可以生效的,把上面的语句改成下面的语句,就可以通过索引进行查找。
select * from staff where birthdate < (to_date(‘01-MAY-82’) + 0.9999);
注意:对于 MIN, MAX 函数,Oracle 仍然使用索引。

4. 使用 LIKE ‘%T’ 进行模糊查询
select * from student where name like ‘aaa%’ ; // ‘aaa%’ 会用到索引
select * from student where name like ‘%aaa’ ; //’%aaa’ 或者 ‘_aaa’ 不会使用索引

5. WHERE 子句中使用不等于操作
不等于操作包括:<>, !=, NOT colum >= ?, NOT colum <= ?
对于这个限制条件可以通过 OR 替代,例如: colum <> 0 ===> colum>0 OR colum<0

6. 等于和范围索引不会被合并使用
SELECT emp_id, emp_m, salary_q … FROM emp WHERE job=‘manager’ AND deptno>10
job 和 deptno 都是非唯一索引,这种条件下 oracle 不会合并索引,它只会使用第一个索引。

7. 比较不匹配数据类型
dept_id是一个varchar2型的字段,在这个字段上有索引,但是下面的语句会执行全表扫描。
select * from temp where dept_id = 100101;
这是因为 oracle 会自动把 where 子句转换成 to_number(dept_id)=900198,相当于使用函数,这样就限制了索引的使用。正确写法如下:
select * from temp where dept_id = ‘100101’;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557574.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA跑步计时器app_坚持跑步神器app

&#xfeff;坚持跑步神器app&#xff0c;让坚持不了自己跑步训练的人能够完成自己的训练目标&#xff0c;特色的惩罚系统时刻监督你跑步&#xff0c;不需要GPS就可以实现&#xff0c;非常方便&#xff0c;快来下载吧坚持跑步神器app介绍坚持跑步神器&#xff0c;设定每天跑步多…

java 中 BigDecimal 详解

首先&#xff0c;学习一个东西&#xff0c;我们都必须要带着问题去学&#xff0c;这边我分为 【为什么&#xff1f;】【是什么&#xff1f;】【怎么用&#xff1f;】 【为什么要用BigDecimal&#xff1f;】 首先&#xff0c;我们先看一下&#xff0c;下面这个现象 那为什么会…

三星s7不能运行java_在调试模式下启动时Android应用程序崩溃

当我在 debug 模式下运行时&#xff0c;应用程序崩溃了&#xff0c;但是当我正常运行它时它会起作用 . 我认为附加调试器时会出现问题 .日志&#xff1a;A/art: art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() ! GetDebugThread() (Thread::Current()0x…

关于vue-cli3中配置请求跨域的问题

关于vue-cli3中配置请求跨域的问题 根据Vue CLI3官方文档&#xff0c; 需要在vue.config.js文件中配置devServer.proxy选项来解决跨域问题。 1.关于vue.config.js文件 此文件在vue-cli3中不会自动生成&#xff0c;需要手动在项目根目录下创建。 2.配置devServer.proxy选项…

java单元测试内存数据库_基于内存数据库的单元测试

背景&#xff1a;当我们在进行单元测试时&#xff0c;对于关系型数据库(例如mysql)和非关系型数据库(例如redis)的处理&#xff0c;有的小伙伴通过mock的方式制作出假的数据进行测试&#xff0c;有的小伙伴会连到开发环境操作数据库。而连到开发环境&#xff0c;会受到很多限制…

String、StringBuilder、StringBuffer的区别

它们之间的区别&#xff1a; 在我们学习String类的时候&#xff0c;也会学习到StringBuilder和StringBuffer&#xff0c;但是他们之间有什么区别呢&#xff1f; 当然他们在具体的代码实现上、内存分配上以及效率上都有着不同&#xff08;我这里以JDK8为例&#xff09;&#xff…

2016年 java_2016年java考试试题及答案

2016年java考试试题及答案简答应用题1.下面程序运行后&#xff0c;可以使用上下左右键移动组件。 补充下画线部分的代码。import java.awt.*;import java.awt.event.*;public class E6 extends Frame implements keyListener{TextField b1;int x,y;E6(){setLayout (new FlowLay…

【Java深入理解】String str = “a“ + “b“ + “c“到底创建了几个对象?

String str “a” “b” “c"到底创建了几个对象&#xff1f;这是我们在讨论中最经常遇到的一个问题同时也是面试题。我们都知道在Java中从”.java"文件编译成".class"文件的过程&#xff0c;会有一个优化器去优化我们的代码。这个问题需要分成三种情况…

java quartz tomcat_Quartz Scheduler - 在Tomcat或应用程序jar中运行?

我们有一个Web应用程序&#xff0c;它通过在Jersey / Tomcat / Apache / PostgreSQL上运行的RESTful Web服务接收传入数据 . 与此Web服务应用程序分开&#xff0c;我们需要执行许多重复和计划任务 . 例如&#xff0c;以不同的时间间隔清除不同类型的数据&#xff0c;在不同的时…

php post json请求参数传递_php post json参数的传递和接收处理方法

页面1 &#xff0c;php传递json参数的页面&#xff1a;1.phpfunction http_post_data($url, $data_string) {$ch curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);curl_setopt($ch, …

Linux中如何查看某个端口是否被占用

Linux中如何查看某个端口是否被占用 1.netstat -anp |grep 端口号 如下&#xff0c;我以3306为例&#xff0c;netstat -anp |grep 3306&#xff08;此处备注下&#xff0c;我是以普通用户操作&#xff0c;故加上了sudo&#xff0c;如果是以root用户操作&#xff0c;不用加sudo…

java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包

tags&#xff1a; java jsw maven zip1、概述使用java开发程序&#xff0c;在windows平台下&#xff0c;一般有web应用&#xff0c;后台服务应用&#xff0c;桌面应用&#xff1a;web应用多数打成war包在web容器(如tomcat,jetty等)中运行桌面应用一般打成jar包或exe文件运行后台…

如何处理代码冲突

如何处理代码冲突 冲突合并一般是因为自己的本地做的提交和服务器上的提交有差异&#xff0c;并且这些差异中的文件改动&#xff0c;Git不能自动合并&#xff0c;那么就需要用户手动进行合并 如我这边执行git pull origin master 如果Git能够自动合并&#xff0c;那么过程看…

php试题与答案(二),php面试题附答案二

1、如何实现字符串翻转&#xff1f;function getStr($str){$lenstrlen($str);for ($i0;$i$temp$str[$i];$str[$i]$str[$len-$i-1];$str[$len-$i-1]$temp;}return $str;}echo getStr("abcdef");?>2、apachemysqlphp实现最大负载的方法&#xff1f;个人观点&#x…

如何理解NIO

文章目录1.什么是NIO&#xff1f;2.为什么用NIO&#xff0c;传统IO有什么缺陷&#xff1f;3.NIO和IO的区别4.怎么理解NIO是面向块的、非阻塞的5.NIO是怎么实现的&#xff1f;1.什么是NIO&#xff1f; java.nio全称java non-blocking IO&#xff08;实际上是 new io&#xff09…

sublime php快捷键,分享Sublime Text 3快捷键精华版!

下面由sublime教程栏目给大家介绍Sublime Text 3 快捷键精华版&#xff0c;希望对需要的朋友有所帮助&#xff01;CtrlShiftP&#xff1a;打开命令面板CtrlP&#xff1a;搜索项目中的文件CtrlG&#xff1a;跳转到第几行CtrlW&#xff1a;关闭当前打开文件CtrlShiftW&#xff1a…

MyBatis Plus——忽略某个实体类属性和数据库表字段之间的映射关系

问题描述 在开发中可能会遇到MyBatis-Plus使用实体类属性进行SQL操作&#xff0c;但是不用存到数据库中去查找&#xff0c;这时候我们的实体中有这个属性&#xff0c;但是数据库的表中没有这个字段(即&#xff1a;实体类属性非数据库表字段)&#xff0c;如果不做处理就会报错。…

php 高德地图计算距离,距离、长度、面积

JS API 为开发者提供了空间数据计算的函数库 AMap.GeometryUtil&#xff0c;可以帮助开发者计算点线面空间关系、长度、面积等函数。更多示例请查看 示例中心本章我们将介绍一些常用的数学计算方法&#xff0c;包括&#xff1a;计算两点间的实际距离 AMap.GeometryUtil.distanc…

@Transient注解作用

java 的transient关键字的作用是需要实现Serilizable接口&#xff0c;将不需要序列化的属性前添加关键字transient&#xff0c;序列化对象的时候&#xff0c;这个属性就不会序列化到指定的目的地中。 用法 transient 就是在给某个javabean上需要添加个属性&#xff0c;但是这…

Java隐含对象实验报告,JSP隐含对象response实现文件下载

一.简单介绍JSP隐含对象response实现文件下载(1)在JSP中实现文件下载最简单的方法是定义超链接指向目标资源&#xff0c;用户单击超链接后直接下载资源&#xff0c;但直接暴露资源的URL也会带来一些负面的影响&#xff0c;例如容易被其它网站盗链&#xff0c;造成本地服务器下载…