今天重庆ORACLE社区有位哥们提问,为啥索引重建(alter index rebuil)之后,SQL变慢了,以前15秒就可以完成,现在要2分多种,于是问他要了执行计划

SQL> set autotrace traceonly
SQL> SELECT SEQ_PAY_CUSTOMEROPER.Nextval,u.ID,'admin',1,t.LAST_LOGIN_TIME,t.LOGIN_TIMES,t.LOGIN_IP2       FROM EFB_USER_MOVE@WODBLINK t,T_PAY_USERINFO u3       WHERE t.ID = u.ID AND u.ID > 3500000 AND u.ID<400000AND t.ID > 3500000 AND t.ID <= 40000004  /123832 rows selected.Execution Plan
----------------------------------------------------------
Plan hash value: 4225832519-----------------------------------------------------------------------------------------------------------
| Id  | Operation          | Name                 | Rows  | Bytes | Cost (%CPU)| Time     | Inst   |IN-OUT|
-----------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |                      |     1 |    77 |     5   (0)| 00:00:01 |        |      |
|   1 |  SEQUENCE          | SEQ_PAY_CUSTOMEROPER |       |       |            |          |        |      |
|   2 |   NESTED LOOPS     |                      |     1 |    77 |     5   (0)| 00:00:01 |        |      |
|*  3 |    INDEX RANGE SCAN| PK_T_PAY_USERINFO    |     1 |     6 |     3   (0)| 00:00:01 |        |      |
|   4 |    REMOTE          | EFB_USER_MOVE        |     1 |    71 |     2   (0)| 00:00:01 | WODBL~ | R->S |
-----------------------------------------------------------------------------------------------------------Predicate Information (identified by operation id):
---------------------------------------------------3 - access("U"."ID">3500000 AND "U"."ID"<=4000000)Remote SQL Information (identified by operation id):
----------------------------------------------------4 - SELECT "ID","LAST_LOGIN_TIME","LOGIN_TIMES","LOGIN_IP" FROM "EFB_USER_MOVE" "T" WHERE"ID"<=4000000 AND "ID">3500000 AND "ID"=:1 (accessing 'WODBLINK' )Statistics
----------------------------------------------------------86691  recursive calls18753  db block gets14781  consistent gets0  physical reads4035364  redo size5163224  bytes sent via SQL*Net to client91297  bytes received via SQL*Net from client8257  SQL*Net roundtrips to/from client0  sorts (memory)0  sorts (disk)123832  rows processed

这个SQL太简单了,可以说是我见过的SQL中最简单的,执行计划也非常简单。

这个SQL要返回123832条记录,然后执行计划走的是nested loops,问题显而易见了,原因是表EFB_USER_MOVE是通过DBLINK过来的,本地无法得知表EFB_USER_MOVE的统计信息(也就是无法知道它有多少行),所以CBO默认给它设置为1行,但是返回了123832条记录,所以给这个SQL加了个HINT

SELECT /*+ full(u)*/ SEQ_PAY_CUSTOMEROPER.Nextval,u.ID,'admin',1,t.LAST_LOGIN_TIME,t.LOGIN_TIMES,t.LOGIN_IPFROM EFB_USER_MOVE@WODBLINK t, T_PAY_USERINFO uWHERE t.ID = u.IDAND u.ID > 3500000AND u.ID < 400000AND t.ID > 3500000AND t.ID <= 4000000;

这样SQL就能几秒跑完了,这里的sequence还值得注意,因为要返回123832条记录,如果sequence上的cache很小,也必然导致SQL慢,建议设置cache到1000

总结:遇到SQL语句中要引用DBLINK,需要特别留意,通常这样的SQL需要DBA添加HINT,其实这只是DBLINK中一个需要注意的地方,还有地方就是 有时候需要添加

driving_site 这个HINT来优化,具体就不多说了。

转载于:https://www.cnblogs.com/hehe520/archive/2011/11/01/6330560.html

DBLINK 无统计信息导致SQL变慢相关推荐

  1. 统计信息:SQL执行优化之密钥

    SQL 执行的指导思想是什么? SQL 执行计划的正确依赖选择依赖于什么?统计信息为什么在 SQL 执行中起到关键性的作用?如何才能自动化收集统计信息?让 一起了解 SQL 执行优化的核心底座. 统计 ...

  2. 通过手动创建统计信息优化sql查询性能案例

    本质原因在于:SQL Server 统计信息只包含复合索引的第一个列的信息,而不包含复合索引数据组合的信息 来源于工作中的一个实际问题, 这里是组合列数据不均匀导致查询无法预估数据行数,从而导致无法选 ...

  3. mysql 非自然月统计_技本功|统计信息对SQL执行效率的影响

    点击蓝字 关注我们 在正文开始前,我们先补充一轮知识点. DING! 什么叫统计信息? 统计信息是数据库对所有表信息进行数据抽样后得出的数据统计,它是一个数据库优化器选择最佳执行计划的核心依据. 什么 ...

  4. execution 排除_使用SQL Server 2016 Live Execution统计信息对SQL查询性能进行故障排除

    execution 排除 SQL Server Management Studio a graphical interactive that allows you to interact with t ...

  5. oracle 收集统计信息会锁表吗,统计信息锁住导致收集统计信息失败引起sql执行异常...

    这个是老生产谈的事情,统计信息不准确导致sql执行异常,此次记录的主要是表的统计信息被锁住导致无法正常收集统计信息导致sql执行异常: 收集表的统计信息: SQL> exec DBMS_STAT ...

  6. oracle tabe unlock_Oracle数据库之统计信息锁住导致收集统计信息失败引起sql执行异常...

    本文主要向大家介绍了Oracle数据库之统计信息锁住导致收集统计信息失败引起sql执行异常,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 这个是老生产谈的事情,统计信息不准确导 ...

  7. 全废话SQL Server统计信息(2)——统计信息基础

    接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让所有习惯黑暗的眼睛都习惯光明--顾城<我是一个 ...

  8. MySQL · 性能优化· CloudDBA SQL优化建议之统计信息获取

    阿里云CloudDBA具有SQL优化建议功能,包括SQL重写建议和索引建议.SQL索引建议是帮助数据库优化器创造最佳执行路径,需要遵循数据库优化器的一系列规则来实现.CloudDBA需要首先计算表统计 ...

  9. mysql统计信息表行数不准确_mysql SQL调优-统计信息不准的原因

    问题现象: 开发报告查询语句突然变慢. 处理过程: 1.在从库查看执行计划: 并且执行查询,结果是返回159条数据,只需要0.58秒,并不慢 (2)了解到原来应用连接的是主库,随即上主库查看执行计划, ...

最新文章

  1. python deque双端队列的神奇用法
  2. 找出和为某个数的连续正整数序列
  3. Semaphore信号使用
  4. node-rsa加密,java解密调试
  5. slowfast解读:用于计算机视觉视频理解的双模CNN
  6. 网络:http请求之几种常见技术
  7. MySQL REGEXP:正则表达式查询
  8. 五、Go语言复合数据类型(下)
  9. android root工具twrp,安卓手机没有twrp的情况,如何下刷入magisk并获得root权限.
  10. 把人工智能、机器学习、深度学习串一串,串一个同心圆
  11. 通过CDN引入jQuery的几种方式
  12. aws rds监控慢sql_AWS RDS SQL Server恢复模型,备份和还原
  13. 离散数学蕴含等值式前件为假时命题为真的理解
  14. MyBatis使用Mapper动态代理开发Dao层
  15. 小程序发布上线流程_微信小程序开发到上线流程详解
  16. 【python统计分析】stats.ttest_ind 独立样本T检验
  17. 封装60秒倒计时vue组件
  18. iOS 集成Facebook登陆
  19. java导出csv文件,使用Excel打开中文乱码
  20. 异常检测论文阅读《Anomaly Detection in Video Sequences: A Benchmark and Computational Model》

热门文章

  1. imperial college rejection
  2. 《HTML5 Canvas开发详解》——导读
  3. 使用ENTER模拟触发表单提交或者click事件
  4. linux软件包管理之rpm 、yum基本使用
  5. 解决jquery版本冲突问题
  6. 【引用】ActionContext和ServletActionContext介绍
  7. 至毕业设计组同学的一封公开信
  8. hdu 5624 KK's Reconstruction(最小生成树)
  9. hdu 4991(树状数组优化dp)
  10. 宏定义和内联函数的区别