dm之sql优化

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.添加索引时间列倒叙+条件组合索引解决,满足用户需求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值