1系统基础信息
1.1基本信息
(蓝色标注的项为必须填写的信息。)
数据库版本:V7
集群架构:单机
初始化信息:page_size=16、extent_size=16、charset=0、case_sensitive=0
1.2SQL信息
(如果是sql语句引发的错误请务必填写以下信息。蓝色标注的项为必须填写的信息,其他项根据情况尽量提供。)
业务场景说明:分页查询,无过滤性条件,时间列倒叙排序,4秒出结果,首页慢
对应sql语句:
select
*
from
ALESSLOGISTICSAPPDB2021.ALOGI_CARD_MealConsumeRecord
where
recId in
(
SELECT
recId
FROM
(
SELECT
tblTEMP.recId,
ROWNUM as RowIndex
FROM
(
select
recId
from
ALESSLOGISTICSAPPDB2021.ALOGI_CARD_MealConsumeRecord
where
(
tenId=‘B04AD0DA5FAE99B4’
)
and
(
1=1
)
order by
createTime desc
)
tblTEMP
WHERE
ROWNUM <= 50
)
WHERE
RowIndex > 0
)
order by createTime desc
2问题分析和处理
2.1问题描述
Sql过滤性不好,分页查询慢
2.2问题排查分析
1、建议修改sql代码,改变分页方式,效果不明显:
select *
from (select *
from (select a.*,
rownum rn
from ( select recId
from ALESSLOGISTICSAPPDB2021.ALOGI CARD MealConsumeRecord
where tenId=‘B04ADODA5EAE99B4’
and 1=1
order by createTime desc ) a )
where rownum <=10)
where rn >=1;
2、建议加hint top_order_opt_flag(1) 效果不明显
3、原sql基础上创建组合索引,执行耗时24毫秒
CREATE INDEX “ind_alogicardmealconsumerecord_ctime” ON “ALESSLOGISTICSAPPDB2021”.“ALOGI_CARD_MealConsumeRecord”(“createTime” DESC,“tenId” ASC,“recId” ASC) ;
3问题结论处理方式
1.分页语句写的不好,过于冗余,已和现场沟通
2.添加索引时间列倒叙+条件组合索引解决,满足用户需求
dm之sql优化
最新推荐文章于 2024-08-30 17:07:36 发布