ORACLE 实行查询语句慢(不走对应索引)

打印 上一主题 下一主题

主题 925|帖子 925|积分 2775

 
1. 索引未被创建或未正确创建



确保为查询中涉及的列创建了索引。例如,假如你常常需要按column_name列进行查询,确保已经为该列创建了索引,索引创建语句
   CREATE INDEX idx_column_name ON table_name(column_name);
  2、索引不可用


原因:索引大概被标志为不可用(UNUSABLE)通常是由于索引重建失败或数据导入操作导致的。
办理方法:检查索引状态并重建索引
检查索引状态
   SELECT INDEX_NAME, STATUS FROM USER_INDEXES WHERE TABLE_NAME = 'TABLE_NAME'; 
  假如索引不可用,重建索引
   ALTER INDEX INDEX_NAME REBUILD;
  3、统计信息不正确

原因:
Oracle 优化器依赖统计信息来决定实行筹划。假如表的统计信息不正确或过时,优化器大概会错误地选择不利用索引。
所以创建索引并且实行语句没有问题,则 可以利用DBMS_STATS包来收集最新的统计信息:
办理方法:  
   EXEC DBMS_STATS.GATHER_TABLE_STATS('SCHEMA_NAME', 'TABLE_NAME');
EXEC DBMS_STATS.GATHER_TABLE_STATS('SYMDR', 'LAB_REPORT_INFO');
  4、假如收集最新的统计信息实行报错

错误信息:
ORA-20005: object statistics are locked (stattype = ALL) 则看是否有死锁
   SELECT s.sid, s.serial#, l.object_id, o.object_name, l.session_id blocking_sid
FROM v$locked_object l
JOIN dba_objects o ON l.object_id = o.object_id
JOIN v$session s ON l.session_id = s.sid
WHERE o.object_type = 'LAB_REPORT_INFO';
  5、停止会话

假如找到死锁可以利用如下命令停止会话
   ALTER SYSTEM KILL SESSION 'sid,serial#';
   6、强制更新统计信息

假如确定没有其他会话正在利用统计信息,或者已经停止了阻塞会话,可以实验强制更新统计信息:
   
BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(
    ownname       => 'OWNER',
    tabname       => 'TABLE_NAME',
    estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
    method_opt    => 'FOR ALL COLUMNS SIZE AUTO',
    cascade       => TRUE,
    force         => TRUE);
END;
/
BEGIN
  DBMS_STATS.GATHER_TABLE_STATS(
    ownname       => 'SYMDR',
    tabname       => 'LAB_REPORT_INFO',
    estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE,
    method_opt    => 'FOR ALL COLUMNS SIZE AUTO',
    cascade       => TRUE,
    force         => TRUE);
END;
/
  7、 检查实行筹划

利用 EXPLAIN PLAN 或 DBMS_XPLAN 检察查询的实行筹划,了解优化器为何选择不利用索引: 
   EXPLAIN PLAN FOR SELECT * FROM TABLE_NAME WHERE COLUMN_NAME = 'VALUE';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
  
  EXPLAIN PLAN FOR
select * from lab_report_info where org_code='XX'   and request_no='XX'      and local_id='XX' ; 
SELECT * FROM table(DBMS_XPLAN.DISPLAY());

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦见你的名字

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表