暂无图片
复合索引与单一索引
我来答
分享
Zoe
2024-12-19
复合索引与单一索引

基本情况:表数据13亿,按月分区、日期字段是单一索引。日期分布均匀
现sql查询条件用到 日期、机构代码、类型.查询结果客户代码和sum(金额),一共用到这5个字段

目前分析sql瓶颈在于:用的日期这个单一索引,查询返回结果基数大,再回表消耗大。

我的思路是减少基数。这种情况建索引哪种好?
1.新建复合索引:机构代码、日期
2.将原单一索引变成复合索引,日期、+机构代码
本表数据量大,用的地方多。已经有4个索引。其中日期的单一索引用到的特别多。

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Zoe

我采取了1,新建复合索引:机构代码和日期。确实减小了返回基数,大大提高了效率。对系统中用到这张表的ddl操作sql,进行了监控,看是否有严重影响效率的sql。 优化后,原先前端查询从2分钟降到9秒。

暂无图片 评论
暂无图片 有用 1
打赏 0
Zoe
题主
2024-12-23
前端验证成功后,下午对表中数据进行了一系列操作后索引失效,SQL语句没变,执行计划走了原来的单一索引。优化器没有选择使基数更小的复合索引。分析可能导致此现象的原因
Thomas

我个人感觉,有些关键的信息要具体化。比如日常用这个SQL,where条件后筛出的记录大概是多少条,如果只筛出1000条,和筛出10万条,采取的策略就应该不一样。

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


请输入正文
提交
相关推荐
Oracle 12.2.0.1 expdp pdb hang
回答 4
已采纳
解决如下:实际和该错误有关:ORA01732:datamanipulationoperationnotlegalonthisview使用errorstack跟踪,跟踪具体的SQL:altersyste
将we8dec字符集升级为al32utf8
回答 3
好的,谢谢各位专家建议。
简单测试jdbc连接
回答 3
供参考https://www.modb.pro/db/603901
Oracle中存储过程和它调用的存储过程属于一个事务 ,还是两个独立的事务?
回答 2
已采纳
–测试:SQL>CREATEORREPLACEPROCEDUREsptestAS2BEGIN3insertintot1values(2);4commit;5ENDsptest;6/Procedu
Oracle如何把数据导出到磁盘上?
回答 2
已采纳
Oracle的导出工具EXP支持把数据直接备份到磁盘上,这样可以减少把数据备份到本地磁盘,再备份到磁盘上的中间环节。其命令如下:EXPsystem/manager123file/dev/rmt0tab
ORACLE用户密码怎么改不了?
回答 3
先startup
主库里直接复制出来,要怎么给他定义或者添加队列号,使他单独运行成功
回答 2
谢谢
postgresql 有类似oracle的AWR报告的东西吗?
回答 3
postgresql 11版本参数修改:trackactivitieson;trackcountson;trackiotimingon;trackfunctionsall/p1;这四个参数建
求一份mysql dba运维脚本,类似oracle dba 使用 ora脚本或者 percona-toolkit 工具查看主从延时,kill等功能
回答 2
MYSQL官方的mysqlutiles工具集就不错,但是是使用python2编写的.(yum也是使用python2写的,所以不用担心没得python2).下载地址:https://downloads.
oracle bbed 中的 offset 这样理解对吗?
回答 1
8192就outofrange了最大可以设置8191
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~