永发信息网

Oracle的cost值越大,是不是这SQL的执行计划就越差?

答案:5  悬赏:20  手机版
解决时间 2021-02-27 22:55
Oracle的cost值越大,是不是这SQL的执行计划就越差?
最佳答案
理论上是 cost值越大,SQL的执行计划就不好.

但是还有一个前提,就是你的表的分析数据要正确。
cost 值的计算,是根据数据库表的统计信息来计算的。
例如 你有一个 一百万行的表 ABC。 在 A 列上面有一个索引。


SELECt SUM(B) FROM ABC WHERe A = 100
在数据库没有表/索引的 相关统计信息的情况下, 这个 cost 确实是估计出来的一个大概的值。偏差可能 与这个表中的 A=100 的数量有多少相关。
比如 100万条记录里面, A=100 的数据只有一条 / A=100 的数据只有 十万条。 执行的时间可是差很多的。
但是如果表/索引 没有被分析过, 数据库对于
SELECt SUM(B) FROM ABC WHERe A = 100
还是
SELECt SUM(B) FROM ABC WHERe A = 1000
查询的计划,是一样的。

但是如果你的 表/索引, 是已经分析过了的, 那么 cost 所反映出来的值, 可能更精确一些。
因为在分析的时候,就能知道 A=100 的数据只有一条 还是有 十万条。
数据库可以根据需要,选择最佳的查询方案来进行处理。
假如 那一百万条数据中, A=100 的数据只有一条 ,而 A=1000的数据,有 八十万条。
那么很可能
SELECt SUM(B) FROM ABC WHERe A = 100
使用索引的查询计划


SELECt SUM(B) FROM ABC WHERe A = 1000
使用全表扫描的查询计划。
全部回答
CWD
cost是oracle对sql执行占用资源的一种预计, 你要理解cost一般来讲,仅仅是对执行该sql需要占用的cpu与io相关的资源估计,就像一个普通应用程序一样, 他所占用的资源越多就慢吗? 空间换时间的道理应该明白吧. 通常来讲我们都希望cost值越小越好,其目的是为了其他sql更好在共享这些资源,提供整体性能。
1. 首先你要明白索引的存储结构, 这些都是使用索引的一些技巧, 这些技巧对于任何索引都是通用的,索引是占用物理存储的与基表具有逻辑影射的一组内容,索引的存储一般都是有序的,如果你要比较同一个表的两个索引(a,b),执行计划就会选择a[1]和b[1..n] 所有的记录比较, 然后接着a[2]和b[1...n]比较的次数为笛卡儿积, 相当于 C中的两次FOR循环
for(i=0;i<=n;i++)
for(j=0;j<=n;j++)
{ if(a[i]>b[j])
then "this record should be put into memory"
}
你知道, 索引和表的记录在oracle中是根据他的二元高度确定cost的, 二元高度越高就证明要经过的I/O次数越多, 执行计划就越差, 如果索引记录和基表记录也不在同一个块中,那么更会增加需要query的时间, 所以一般这种情况oracle的执行计划会选择全表扫描来的更快一点。
2. 你说的对, 但是在这里,oracle的内部转换不会根据优先级进行,
比如说 WHERe Ename = 123
但是Ename 是varchar类型, 这个时候就会内部转换为
WHERe TO_NUMBER(ENAME) = 123
记住,在oracle 中,所有字符均被转换为大写, 一般oracle 认为你要检索的条件是"神圣的", 所以一般只转换索引的列进行(本人见解, 不同意见者, 欢迎拍砖)
cost只是指导值,Oracle优化器通过对象的统计信息来计算相关计划的成本cost,并通过cost的高低来衡量有限的几种可用计划。但cost高并不代表计划就不好,cost低也不代表计划好;它只是一种指导优化器的依据。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
洗车玻璃用洗洁精可以不
荔湾区河沙有什么招聘工作的吗?
如何看穿摩羯座在说谎
iPad有什么专业级的编辑图片软件
花贡中学在哪里啊,我有事要去这个地方
发财鱼选什么牌子的鱼饲料比较好?养鱼新手。
阿拉伯数字是阿拉伯国家发明的吗?拜托各位大
0)距离最短的点恰好是抛物线的顶点,求a的取
龙湖丽景地址有知道的么?有点事想过去
我的眼睛里每天都会拉出白丝,这是怎么回事啊
怀化308省道去年在修路不好走。不知道今年是
Do you have anything to buy?
人生格言:今日践踏我的,他日我会把你踩在脚
iPhone home键有一点松动。正常么
去美国塞班岛旅游,购物买什么最划算
推荐资讯
牧场物语矿石镇的伙伴们作弊码?
拼包河这个地址在什么地方,我要处理点事
凤香经典在哪里啊,我有事要去这个地方
兆丰一街/西盈路(路口)我想知道这个在什么地
【如何巧记英语单词】如何巧记英语单词能够完
与十六进制数(8FH)等值的二进制数是多少
阿铭发艺工作室地址在哪,我要去那里办事,
堡沃精细化工有限公司地址在什么地方,想过去
宜家百货超市我想知道这个在什么地方
大港村怎么去啊,有知道地址的么
下列说法中正确的是A.磁感应强度B越大的地方
蜡嘴鸟和铜嘴有什么区别,我的鸟,是蜡嘴还是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?