暂无图片
oracle的sql优化
我来答
分享
刘广
2021-11-26
oracle的sql优化

数据库:单实例oracle 10.2.0.1.0
表名:s_log
数据量:106532
索引共3个:
1、ordernum,id组合索引
2、wpls字段索引
3、nsha字段索引

select * from s_log where cardid=981 and status=1 order by ordernum desc,id desc
distinct cardid有664
status只有3种值

1小时执行10万次,请问这种怎么最大优化呢,直接创建caidid和status的组合索引即可吗

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
徐孝亮

像status这种字段,只有3个不同值,如果创建索引,后续如果有高并发的插入操作反而会产生索引分裂,影响数据库性能。

暂无图片 评论
暂无图片 有用 0
暂无图片
刘广
题主
2021-11-26
好 谢谢
刘广
题主
2021-11-26
有道理,明白了,谢谢
流星

status=1的有多少行,是不是status=1的只占表中少量的一部分,sql中是不是总是查status=1的

暂无图片 评论
暂无图片 有用 0
刘广
题主
2021-11-26
status分组查询,取值及统计分别为1(98158),2(1443),3(1238),sql总是查cardid和status
流星
答主
2021-11-26
可以创建caidid上的单列索引
Uncopyrightable

不用用select * ,可以把需要的列在select中写出来

暂无图片 评论
暂无图片 有用 0
徐孝亮

直接创建caidid字段的单列索引即可。


暂无图片 评论
暂无图片 有用 0
Thomas

这条语句,输出的记录数是几条?也有的记录,STATUS的值还有可能被UPDATE吗?

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏