暂无图片
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
打赏 0
暂无图片
刘广
题主
2021-11-26
好 谢谢
刘广
题主
2021-11-26
有道理,明白了,谢谢
流星

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

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

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

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

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


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

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

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
Oracle创建索引
回答 6
好的,感谢感谢,收藏了
AWR分析报告问题求助: 数据库存在大量sql高版本问题和硬解析问题。
回答 1
https://www.modb.pro/issue/2313
为什么查询语句在SQL server中执行,在oracle中不能执行?
回答 1
函数不一样
Varchar2 和 char 之间的主要区别是什么
回答 1
已采纳
oracle中char与varchar2的区别1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的,比如,存储字符串“abc",对于CHAR(20),表示你存储的字符将占20个字
有定时备份到带库,手动全备到本地时,该如何备份呢?
回答 2
已采纳
最好到带库里去拿回归档确定要异机恢复到那个时间段,如果非实时性异机恢复是不需要归档文件的,否则可以尝试rman的duplication参考见链接:https://www.modb.pro/doc/71
oracle中有一张表,对表中的数据每做一次变更都要做留存,要有历史数据,版本控制,有什么比较优雅的做法?
回答 4
1.可以做一个变量表A放要更新的正确数据2.将需要改动的数据表关联A表,将原数据存放于历史数据表B。3.再用merge更新原数据表
Oracle收集统计信息,如何排除用户下某张表
回答 1
针对不想收集统计信息的表,可以锁住统计信息:execdbmsstats.deletetablestats('','');execdbmsstats.locktablestats('','');
DG Broker为什么不推荐上生产?
回答 5
没有这个说法吧,官方开发的管理工具,简单稳定,特别是mrp自动守护,生产环境见多了
CentOS中运行enmotech/opengauss镜像报错,这是怎么回事?
回答 1
能否把您运行的完整dockerrun命令贴出来?
oracle一键巡检
回答 2
已采纳
上传附件:dbcheck.sql