SQL优化之Oracle函数索引

SQL查询条件使用函数优化

背景: 由于数据原因表关联只能使用函数对数据进行分隔

select
    B.*
from
    TABLE_A A
        cross join TABLE_B B
where substr(B.TID, 0, 22)=substr(A.TID, 0, 22)
  and B.TEST in ('X','XX','XX','XX','XXX','XXX')

解决方案

首先需要知道这两张表的TID字段建立了索引,但是由于关联条件使用到了函数导致不走索引;

Oracle中存在函数索引,可以将自己需要使用函数的字段建立函数索引,从而到达关联条件使用函数也走索引;

这里建立函数即可解决不走索引的问题,原始数据3000W查询9秒,建立索引后查询0.3秒

CREATE INDEX IND_TABLE_A_FUNCIND_FLTID ON TABLE_A(substr(TID,0,22));
CREATE INDEX IND_TABLE_B_FUNCIND_FLTID ON TABLE_B(substr(TID,0,22));

学习是永无止境的。

Original: https://www.cnblogs.com/SimpleWu/p/16700587.html
Author: 日落西风又在吹
Title: SQL优化之Oracle函数索引

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572322/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux常用命令

    区分rpm与-qi、-qf、-ql和-qa这4个不同选项组合的作用: rpm -qi 【rpm包名】:查看已安装的RPM包的相关信息。 rpm -qf 【文件的绝对路径】:列出某个…

    Java 2023年6月8日
    093
  • 不重启tomcat,清空catalina.out的几种方式

    相信小伙伴们使用tomcat容器部署项目时,都会遇到这个问题 尤其是刚上线日志级别一般启动为DEBUG级别时,catalina.out文件过一会就会特别特别大,特别占我们服务器上的…

    Java 2023年6月16日
    0104
  • 多线程的一点小结

    最近看多线程比较多,对于volatile,syn,CAS,JMM模型(主内存,工作内存)这些概念有些理解。volatile,syn工作机制等。以及对于多线程中可见性,原子性的理解。…

    Java 2023年6月15日
    079
  • java设计模式

    一、设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理…

    Java 2023年5月29日
    077
  • Redis 集群模式

    概述 Redis 在 3.0 之后开始支持 Cluster(集群)模式,特点如下: 支持节点的自动发现:可向集群动态添加节点,并自动融入 支持 slave-master 选举和容错…

    Java 2023年6月8日
    0146
  • 条件注解@Conditional

    SpringBoot条件注解@Conditional,可用于根据某个特定的条件来判断是否需要创建某个特定的Bean。SpringBoot自动配置功能里面就大量的使用了条件注解。接下…

    Java 2023年6月5日
    0115
  • 注解@Slf4j

    如果不想每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class); 可以用注解@Slf4j 一、在p…

    Java 2023年6月13日
    071
  • Serverless遇到 FinOps: Economical Serverless

    摘要:本文基于FunctionGraph在Serverless 领域的FinOps探索和实践,提出业界首个Serverless函数总成本估计模型 历川:华为云Serverless研…

    Java 2023年6月15日
    085
  • SpringBoot自定义注解失效原因(2022-10-3)

    长话短说,我负责的是一个多模块项目,接手的时候没有注意 @ComponentScan 注解的扫描范围,所以打包的时候,没有扫到我新加包。所以,重点检查下 @ComponentSca…

    Java 2023年6月9日
    068
  • 部署-docker资源踩坑

    docker资源踩坑 博主在自己的电脑上,使用docker运行gitlab镜像的时候,发现docker命令失去了响应。但是根据网上的资料显示,gitlab最低配置只需要2核,4GB…

    Java 2023年6月7日
    0111
  • WebSocket和Socket的区别_WebSocket和http的区别_WebScoket的长连接和http的长连接的区别_spring的单例bean是线程安全的吗_http请求头请求行请求体

    1 什么是WebSocket? WebSocket从满足基于Web的日益增长的实时通信需求应运而生,解决了客户端发起多个Http请求到服务器资源浏览器必须要在经过长时间的轮询问题,…

    Java 2023年5月30日
    080
  • nginx只允许域名访问,禁止ip访问

    背景:为什么要禁止ip访问页面呢? 这样做是为了避免其他人把未备案的域名解析到自己的服务器IP,而导致服务器被断网,我们可以通过禁止使用ip访问的方法,防止此类事情的发生。 解决方…

    Java 2023年5月30日
    074
  • vue前后端分离项目,使用宝塔面板解决跨域问题,设置Nginx反向代理

    开发环境解决跨域问题: 使用教程 跨域解决本地跨域问题 非唯一方法 生成环境解决跨域问题: 1.创建站点 2.把打包的vue项目dist发送解压到站点里面 ,选择静态模式 3.然后…

    Java 2023年6月5日
    0127
  • 前端(Css学习) 2

    层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言…

    Java 2023年6月5日
    0103
  • java将信息导入到excel文件中

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/jackge/p/4233739.htmlAuthor:…

    Java 2023年5月29日
    091
  • 解决.net mvc session超时的问题

    在.NET MVC中session的默认有效期是20分钟 调整的方式是在项目的Web.config中进行配置,如下方式可以调整为120分钟。 <system.web> …

    Java 2023年5月29日
    067
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球