织梦网站调用工具,app制作工具手机版,深圳的网站建设公司官网,wordpress vpn前言#xff1a;若遇到以下场景#xff0c;大概率是SQL走错了执行计划#xff1a; 1、一条SQL在页面上查询特别慢#xff0c;但拿到数据库终端执行特别快 2、一条SQL在某种检索条件下查询特别慢#xff0c;但拿到数据库终端执行特别快 此时#xff0c;可以尝试按照下述步… 前言若遇到以下场景大概率是SQL走错了执行计划 1、一条SQL在页面上查询特别慢但拿到数据库终端执行特别快 2、一条SQL在某种检索条件下查询特别慢但拿到数据库终端执行特别快 此时可以尝试按照下述步骤进行恢复 目录 一、分析SQL语句中涉及到的物理表依次收集统计信息 
1、单表数据量小的表可通过以下方式收集针对表中所有字段收集速度相对慢 
2、单表数据量大的表可通过以下方式收集针对表中单个字段收集速度相对快 二、SQL语句涉及表的统计信息收集完毕后清除当前SQL的执行计划缓存 
1、查询指定SQL的所有执行计划缓存一条SQL可能会有多条执行计划缓存每个缓存都有一个唯一的cache_item值逐一记录每个cache_item值 
2、根据第一步得到的所有cache_item清除当前SQL所有的执行计划缓存 一、分析SQL语句中涉及到的物理表依次收集统计信息 
1、单表数据量小的表可通过以下方式收集针对表中所有字段收集速度相对慢 
-- 指定表收集全表字段统计信息
call DBMS_STATS.GATHER_TABLE_STATS(模式名, 物理表名称, NULL, 100, TRUE, FOR ALL COLUMNS SIZE AUTO, 64,GLOBAL);--示例
call DBMS_STATS.GATHER_TABLE_STATS(SYSTEM, ORDER_TEST, NULL, 100, TRUE, FOR ALL COLUMNS SIZE AUTO, 64,GLOBAL); 
2、单表数据量大的表可通过以下方式收集针对表中单个字段收集速度相对快 
-- 指定字段收集统计信息
stat 100 on 物理表名(表字段名);--示例
stat 100 on ORDER_TEST(ID);
stat 100 on ORDER_TEST(AMOUNT);
stat 100 on ORDER_TEST(DELETE_FLAG);
stat 100 on ORDER_TEST(ACCOUNTING_MONTH); 二、SQL语句涉及表的统计信息收集完毕后清除当前SQL的执行计划缓存 
1、查询指定SQL的所有执行计划缓存一条SQL可能会有多条执行计划缓存每个缓存都有一个唯一的cache_item值逐一记录每个cache_item值 
-- 模糊查询指定SQL的所有执行计划缓存获取SQL对应的cache_item字段值
select cache_item, *
from v$cachepln
where sqlstr like %你的SQL语句%;--示例
select cache_item, *
from v$cachepln
where sqlstr like %SELECT * FROM ORDER_TEST WHERE ACCOUNTING_MONTH  2025-01%;2、根据第一步得到的所有cache_item清除当前SQL所有的执行计划缓存 
-- 指定清空某条SQL的缓存cache_item字段来源于 第一步
call SP_CLEAR_PLAN_CACHE(cache_item);示例
call SP_CLEAR_PLAN_CACHE(281008439485408); 
特别注意SP_CLEAR_PLAN_CACHE存储过程执行时若不传cache_item则会清除当前模式下所有SQL的执行计划缓存生产环境请谨慎操作。