当前位置: 首页 > news >正文

一条sql语句的改进探索(r5笔记第70天)

昨天同事找我,让我帮忙看两个sql问题,第一个问题是一个sql语句执行频率极高,但是目前的执行速度还是比较慢,希望我看看能不能调优一下。另外一个问题是一个查询执行速度比较慢,但是执行频率不高。我们还是循序渐进,一个一个来看。第一个sql语句如下5knr1ywqugtq8/* TransactionLog_selectByAccRangeTrx_3 */SELECT TRANSACTION_LOG.TRANS_DATE, TRANSACTION_LOG.TRANS_TYPE, TRANSACTION_LOG.PARTITION_ID, TRANSACTION_LOG.ACCOUNT_ID, TRANSACTION_LOG.TRANSACTION_ID, TRANSACTION_LOG.SUB_TRANSACTION_ID, TRANSACTION_LOG.SYS_UPDATE_DATE, TRANSACTION_LOG.SYS_CREATION_DATE, TRANSACTION_LOG.DL_SERVICE_CODE, TRANSACTION_LOG.APPLICATION_ID, TRANSACTION_LOG.DL_UPDATE_STAMP, TRANSACTION_LOG.OPERATOR_ID, TRANSACTION_LOG.PERIOD_KEY, TRANSACTION_LOG.ENTITY_PERIOD_KEY FROM TRANSACTION_LOG WHERE TRANSACTION_LOG.ACCOUNT_ID = :1 AND TRANSACTION_LOG.PARTITION_ID = :2 AND TRANSACTION_LOG.TRANSACTION_ID >= :3 AND TRANSACTION_LOG.TRANSACTION_ID <= :4 AND TRANSACTION_LOG.TRANS_TYPE IN (SELECT /*+ cardinality(1)*/ DISTINCT column_value as transType FROM table (SELECT CAST(:5 AS ar1_ Varchar2Array_tp) FROM DUAL))执行计划如下,从执行计划来看,看起来执行计划还是不错的。索引也使用到了,而且消耗也不高。Plan hash value: 88692238----------------------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |----------------------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | | | 93 (100)| | | || 1 | NESTED LOOPS | | | | | | | || 2 | NESTED LOOPS | | 1 | 81 | 93 (2)| 00:00:02 | | || 3 | VIEW | VW_NSO_1 | 1 | 12 | 19 (0)| 00:00:01 | | || 4 | HASH UNIQUE | | 1 | 2 | | | | ||* 5 | FILTER | | | | | | | || 6 | COLLECTION ITERATOR PICKLER FETCH| | 8168 | 16336 | 19 (0)| 00:00:01 | | || 7 | FAST DUAL | | 1 | | 2 (0)| 00:00:01 | | || 8 | PARTITION RANGE MULTI-COLUMN | | 7 | | 73 (0)| 00:00:01 |KEY(MC)|KEY(MC)||* 9 | INDEX RANGE SCAN | TRANSACTION_LOG_2IX | 7 | | 73 (0)| 00:00:01 |KEY(MC)|KEY(MC)||* 10 | TABLE ACCESS BY LOCAL INDEX ROWID | TRANSACTION_LOG | 1 | 69 | 73 (0)| 00:00:01 | 1 | 1 |----------------------------------------------------------------------------------------------------------------------------------索引情况如下:INDEX_NAME INDEX_TYPE UNIQUENES PAR COLUMN_LIST TABLE_TYPE STATUS NUM_ROWS LAST_ANAL G TRANSACTION_LOG_1IX NORMAL NONUNIQUE YES TRANSACTION_ID,TRANS_TYPE TABLE N/A 270774323 01-APR-15 N TRANSACTION_LOG_2IX NORMAL NONUNIQUE YES ACCOUNT_ID,TRANS_TYPE TABLE N/A 270776953 01-APR-15 N TRANSACTION_LOG_PK NORMAL UNIQUE YES SUB_TRANSACTION_ID,PARTITION_ID,PERIOD_KEY TABLE N/A 270772197 01-APR-15 N可以看到索引还是用了TRANSACTION_LOG_2IX,即使用了字段ACCOUNT_ID,TRANS_TYPE来进行数据过滤。TRANSACTION_LOG_1IX和TRANSACTION_LOG_2IX,其实会发现无论是使用第一个还是第二个,数据的分布还是基本平均的。TABLE_NAME INDEX_NAME CLUSTERING_FACTOR BLOCKS NUM_ROWS INDEX SKIP SCAN | AR1_TRANSACTION_LOG_1IX | 1 | | 73 (0)| 00:00:01 |KEY(MC)|KEY(MC)|/*+opt_param('_optimizer_skip_scan_enabled', 'true')*/93 (2)| 00:00:02 | | |TRANSACTION_LOG_2IX | 7 | | 73 (0)| 00:00:01 |KEY(MC)|KEY(MC)|TRANSACTION_LOG_1IX和TRANSACTION_LOG_2IX都是非唯一性索引,如果能够使用TRANSACTION_LOG_PK其实还是有很大的改进空间。和开发同事的交流来看,他们认为改动难度较大,需要改动的代码量很大,可能需要的时间也较长。但是也不失为一种方式。所以这个方案也是可行但是能不能落地还是一个问号。毕竟在双方的一个权衡中也需要很多的协调。

Elapsed: 00:00:00.70

相关文章:

  • 海量数据迁移之传输表空间(一) (r5笔记第71天)
  • 数据刷新中的并行改进(r5笔记第72天)
  • 一条sql语句的建议调优分析(r5笔记第73天)
  • 泰国之旅随感(r1笔记第70天)
  • 曼谷周末游(r5笔记第74天)
  • 使用flashback query巧妙抽取指定数据(r5笔记第75天)
  • 数据刷新中的并行改进(二) (r5笔记第76天)
  • 养鱼生活的一段终结(r5笔记第77天)
  • oracle监控工具ignite使用图解(r5笔记第78天)
  • 数据刷新中的并行改进(三) (r5笔记第79天)
  • 浅谈exp/imp(上) (r5笔记第81天)
  • dataguard中MRP无法启动的问题分析和解决(r5笔记第82天)
  • tomcat源码编译和环境搭建(r5笔记第83天)
  • 浅谈exp/imp(下) (r5笔记第84天)
  • IT中的闰秒问题(r5笔记第85天)
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【node学习】协程
  • CODING 缺陷管理功能正式开始公测
  • Fastjson的基本使用方法大全
  • HTML中设置input等文本框为不可操作
  • Java面向对象及其三大特征
  • js继承的实现方法
  • Laravel 中的一个后期静态绑定
  • Median of Two Sorted Arrays
  • 程序员该如何有效的找工作?
  • 服务器从安装到部署全过程(二)
  • 技术发展面试
  • 理解在java “”i=i++;”所发生的事情
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 让你的分享飞起来——极光推出社会化分享组件
  • 线上 python http server profile 实践
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​iOS实时查看App运行日志
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​一些不规范的GTID使用场景
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #DBA杂记1
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (ZT)薛涌:谈贫说富
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (论文阅读11/100)Fast R-CNN
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (三)Honghu Cloud云架构一定时调度平台
  • (生成器)yield与(迭代器)generator
  • (算法二)滑动窗口
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)视频码率,帧率和分辨率的联系与区别
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .Net Remoting(分离服务程序实现) - Part.3