热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle的join优化,oracle索引优化之join部分

首先说明一下,文中描述的方法没有什么官方依据,完全来自实践,毕竟我只是一个PHP程序员。问题描述:selectcount(*

首先说明一下,文中描述的方法没有什么官方依据,完全来自实践,毕竟我只是一个PHP程序员。

问题描述:

select count(*) as counter from examination_table left join individual_core on examination_table.id=individual_core.uuid where (instr(individual_core.region_path,'0,1')=1) and (examination_table.jkxw='1') and (individual_core.status_flag='1')

统计数据量,耗时5秒以上。

看SQL DEVELOPER的解释计划,三个条件均不走索引,全部是FULL SCAN。

但是,移除条件:

(instr(individual_core.region_path,'0,1')=1) and (individual_core.status_flag='1')

耗时瞬间零点几毫秒。 剩下的唯一条件走索引了。 想了很久,没有头绪,单独查询 表individual_core加上移除的条件,仍然是走索引,大概零点五毫秒左右。

网上翻看了半天,也没有什么收获,最后看到一篇文章:

http://use-the-index-luke.com/sql/join/hash-join-partial-objects

关于索引的,不是太明白,也只看了一段,根据其中描述,join on的时候,on的字段是否有索引。

我这边的情况是:on后面两个字段都有索引,但on和where后面的字段并没有建立复合索引。

问题就在这里: 我一直想的是,两个表连接的时候,怎么给两个表同时建索引呢,显然是不可能的。

但是又要让查询走索引,那么这里实践出的一种方法就是:

在同一个表中,给on后面的字段和where后面的字段,建立复合索引。

比如我这里的就分别给: 1、examination_table表的 id和jkxw两个字段创建一个复合索引。 2、individual_core的uuid,region_path,status_flag三个字段创建一个复合索引。

------------正 文 已 结 束, 感 谢 您 的 阅 读 (折雨的天空)--------------------



推荐阅读
  • SQL Server 存储过程实践任务(第二部分)
    本文档详细介绍了三个SQL Server存储过程的创建与使用方法,包括统计特定类型客房的入住人数、根据房间号查询客房详情以及删除特定类型的客房记录。 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文介绍了如何在 Oracle 数据库中查询重复数据,并提供了多种方法来筛选和删除重复记录,包括基于单个字段和多个字段的重复数据处理。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 本文介绍了如何在SQL查询中通过使用LIKE和CONCAT函数结合来实现复杂的字符串匹配条件,特别是在处理多表联接和分组数据时的应用。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 本文探讨了在SQL Server 2008环境下,当尝试删除拥有数据库架构的用户时遇到的问题及解决方案,包括如何查询和更改架构所有权。 ... [详细]
  • 本文详细介绍了Hibernate中的立即检索与延迟检索的概念及区别,同时探讨了类级别与关联级别的检索配置方法。通过具体的配置示例,帮助开发者更好地理解和应用这些策略。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
author-avatar
西岑村内徐老爷
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有