博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 两表关联时,年月条件的写法引起的巨大性能的差异
阅读量:5919 次
发布时间:2019-06-19

本文共 701 字,大约阅读时间需要 2 分钟。

hot3.png

需求是要比较最近两个月的值,进行数据检验!所以我用自关联,来将两个月的数据放到一行上,然后进行比较!

sql语句类似于:

select b.ny,b.dwdm,。。。。,     a.js  as sy_js , b.js,    --取出上下两个月的同一列的指标。     。。。。。。。 from tjxx_10 a,tjxx_10 b where    a.dwdm=b.dwdm and a.shbz=b.shbz and a.csxm=b.csxm  and b.ny='201508' and a.ny=b.ny-1

这个语句就是把tjxx_10自关联一下,然后让a行指标201507,b行指标201508.

由于该表已经比较大了有几十万行吧!结果上面执行查询,就要4秒左右。

第一次修改:

 and b.ny='201508' and a.ny=201507

这么关联,还是4秒。

第二次修改

and b.ny='201508' and a.ny='201507'

结果竟然是 0.02秒。

结论:一直以来,我认为在sql中,ny列是varchar2(6)

a.ny=b.ny-1 或者a.ny=201507这种写法都是对的。因为都能正确执行。我认为oracle会自动把数字转为字符串!

但今天遇到这个超大表时,展示出的性能差异说明oracle对上面两种情况都不能利用索引,

因为右侧相当于一个函数,可能要遍历每一行记录,

切记:ny='201507'  不要再写做  ny=201507    了。

转载于:https://my.oschina.net/u/1540190/blog/501703

你可能感兴趣的文章
台积电或抢先量产新一代7纳米芯片
查看>>
Wi-Fi断流坑坏队友:联发科处理器又出事
查看>>
事件溯源与流处理的对比
查看>>
美联储被盯上了?国会“严重担忧”联储网络漏洞
查看>>
台积电:2018年之前不决定是否把工厂迁美
查看>>
无语!没想到你是这样的Win10:竟然有这么低级的Bug!
查看>>
中国信息化发展首超G20国家平均水平
查看>>
交通优化需求下 智能交通迎来386.8亿美元市场规模
查看>>
纳德拉任微软CEO将满2周年 打造全新One Microsoft
查看>>
4G促进智慧城市总体发展
查看>>
勒索病毒出现新变种 传播方式与WannaCry类似
查看>>
Fon Wireless宣布Windows 10用户现可购买其WiFi热点访问服务
查看>>
“大数据”加盟“网格化”管理
查看>>
SoapUI学习(1)- WebService基础
查看>>
《SQL与关系数据库理论——如何编写健壮的SQL代码》一1.7 基关系vs.导出关系
查看>>
国际黑客“匿名者”盯上中国企业 用网攻挑毛病
查看>>
关于配置测试的探讨
查看>>
数据中心里常用的四种交换机设备介绍
查看>>
2017年柳州政府免费WiFi将增至5000个 4G覆盖市区
查看>>
黑客攻击日产汽车网站 抗议日本重启捕鲸
查看>>