[转] Oracle sql 查询突然变慢 -- 案例分析

转自:http://jingyan.baidu.com/article/8275fc868ce57946a03cf692.html

一条sql突然执行变慢,耗时9秒,应用是不能改的,只能从数据库方面下手解决

步骤思路:

1:查看sql是否走索引

2:查看索引是否失效

3:hint 强制走索引(只是用来查看hint状态下,查询是否更改,应用是不能改的)

4:收集该表所有信息(包括索引)

5:分析该表所有信息(包括索引)

6:再次执行并查看

注意:哪个用户执行较慢,就用哪个用户进行操作,这样才准确

方法/步骤

  1. 1

    查看sql是否走索引

    以下是突然查询较慢的sql语句:

    select * from  wwff

    where JGSJ>=to_date(‘2014-10-26 00:00:00‘,‘yyyy-mm-dd HH24:Mi:SS‘)

    and SJZT=1 and  FJBJ=3 and FJR=1 and rownum <= 1

    耗时 9秒

    注释:在JGSJ 字段上已经创建了索引,查看执行计划,发现表没有走索引,进行全表扫描

    步骤阅读

  2. 2

    查看索引是否失效

    select ‘alter index ‘||a.owner||‘.‘||a.index_name||‘ rebuild nologging online;‘

    from dba_indexes a

    where a.table_name=‘WWFF‘

    and a.status<>‘VALID‘

    and a.partitioned<>‘YES‘;  --因为该表不是分区表

    步骤阅读

  3. 3

    hint 强制走索引(只是用来查看hint状态下,查询是否更改,应用是不能改的)

    select /*+index(wwff IDX$$_wwff_JGSJ)*/ * from  wwff

    where JGSJ>=to_date(‘2014-10-26 00:00:00‘,‘yyyy-mm-dd HH24:Mi:SS‘)

    and SJZT=1 and  FJBJ=3 and FJR=1 and rownum <= 1

    耗时0.03秒

    强制走索引之后,耗时才0.03秒,所以必须让该查询较慢的sql走上索引

    步骤阅读

  4. 4

    收集该表所有信息(包括索引)

    SQL> exec dbms_stats.gather_table_stats(ownname =>user ,tabname=>‘WWFF‘ ,estimate_percent => 20,degree => 10,granularity => ‘ALL‘,cascade => TRUE);

    ownname =>user   user 表示当前用户

    cascade => TRUE   true表示包括索引

    步骤阅读

  5. 5

    分析该表所有信息(包括索引)

    analyze table wfxx compute statistics;

    步骤阅读

  6. 6

    再次执行并查看

    select * from  wwff

    where JGSJ>=to_date(‘2014-10-26 00:00:00‘,‘yyyy-mm-dd HH24:Mi:SS‘)

    and SJZT=1 and  FJBJ=3 and FJR=1 and rownum <= 1

    耗时:0.03秒

    收集完统计信息并分析表之后,发现sql 开始走索引了

    注意:只对表收集统计信息或者分析表信息,可能不会生效,必须两个都进行操作

    步骤阅读

    == END

时间: 2024-08-04 11:03:12

[转] Oracle sql 查询突然变慢 -- 案例分析的相关文章

sql查询未走索引问题分析之查询数据量过大

前因: 客户咨询,有一个业务sql(代表经常被执行且重要),全表扫描在系统占用资源很高(通过ash报告查询得到信息) 思路: 1.找到sql_text,sql_id 2.查看执行计划 3.查询sql涉及对象的对象数据量,段大小,行数量,where条件列,是否存在索引,列的选择读情况如何 4.总结,优化整改 1.找到sql_text,sql_id 094cmrxrahdy2 SELECT 8~10个列名称(由于设计用户信息,因此部分信息不再详细说明) FROM Prescription WHERE

oracle SQL查询number字段精度丢失之解决方法

解决办法: -- 3.3:表示原始数据 --fm9999999990.0000:表示保留到小数点后4位,若不存在则用0补位. select to_char(nvl(3.3,0),'fm9999999990.0000') as demo from dual; 原文地址:https://www.cnblogs.com/dqcer/p/9235847.html

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29

Oracle SQL语言之查询语句_超越OCP精通Oracle视频教程培训29 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第4/5套:Oracle SQL语言之查询语句.主要学习Oracle数据库SQL查询限制排序.Oracle SQL联接查询.Oracle SQL子查询等. 视频学习地址: http://edu.51cto.com/course/course_id-8047.html Oracle SQL语

Oracle Database字符集(1)--案例分析

Oracle Database字符集(1)--案例分析 案例分析: 一次数据库导出(exp)案例分析 1)数据字符集 12:40:37 [email protected] prod>show parameter nls NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ nls_l

sql 查询前十条数据

-- oracle sql 查询前十条数据 select * from b2c_code where rownum <= '10'; -- sql server 查询前十条数据 select top 10 * from b2c_code;

数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例

[本文谢绝转载原文来自http://990487026.blog.51cto.com] <大纲> 数据库编程3 Oracle 子查询 insert update delete 事务 回收站 字段操作 企业级项目案例 实验所用数据表 子查询,解决一步不能求解 查询工资比scott高的员工信息: 子查询知识体系搭建: 解释3,查询部门是sales的员工信息: 方法1:子查询 [方法2]:多表: 优化考虑: 解释4[select],只能放单行子查询 解释4[from] 考题:显示员工姓名,薪水 解释

oracle常用经典SQL查询

1 常用SQL查询: 2 3 1.查看表空间的名称及大小 4 5 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size 6 from dba_tablespaces t, dba_data_files d 7 where t.tablespace_name = d.tablespace_name 8 group by t.tablespace_name; 9 10 2.查看表空间物理文件的名称及大小 11 12 sel

oracle新建用户执行sql查询语句出现错误ORA-00942:表或视图不存在

oracle创建新用户后客户端执行SQL查询后出现错误提示如下: 执行查询语句如下: select * from sm_sales_order; ORA-00942:表或视图不存在 创建新用户并指定表空间和临时表空间 CREATE USER xxx IDENTIFIED BY xxxx DEFAULT TABLESPACE LMS TEMPORARY TABLESPACE TEMP; 授予系统权限connect grant connect to xxx; 授予对象权限,只限查询 grant se

SQL 查询横表变竖表

SQL 查询横表变竖表 /*普通行列转换 假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/ -------------------------------------------------------------------------/*想变成 姓名         语文        数学        物理          ---------- ----------