在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

Oracle中复合索引与空值的索引怎么用

104次阅读
没有评论

共计 828 个字符,预计需要花费 3 分钟才能阅读完成。

这篇文章给大家分享的是有关 Oracle 中复合索引与空值的索引怎么用的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

在 QQ 群里讨论一个 SQL 优化的问题,语句大致如下:

select A,min(B) from table group by A;--A,B 都没有 not null 约束,A 列无空值,B 列有空值。-- 存在复合索引 IX_TEST(A,B)

于是手动测试,环境采用 Oracle 自带的 scott 用户下的 emp 表。

1. 首先查看如下语句的执行计划(此时表只有主键索引):

2. 添加 IX_TEST(deptno,comm) 后查看执行计划:

发现依然是全表扫描。

3. 为 deptno 列添加非空约束后再次查看执行计划:

4. 总结:

Btree 索引是不存储空值的,这个是所有使用 Btree 索引的数据库的共同点。

在本例中我们创建了 deptno,comm 的符合索引。如果 deptno 没有非空约束,那么说明有的 record 不会出现在索引中,此时想要找到 min(comm) 就必须回表才能确定 deptno 为 null 的行是否有 comm 的值。此时优化器认为全表扫描比扫描索引再回表更为合理,因此选择全表扫描。

当我们添加了非空约束后,deptno 不可能为空,因此索引的 key 值数等于表总行数,另一列 comm 即便为空也不影响 min() 取值,只需要扫描索引即可得到所需结果,此时优化器选择索引扫描。

而在 Mysql 中无论复合索引首列是否存在非空约束,都会使用索引,deptno 为 null 的会全部分在一组取 min(comm),可能是 Mysql 的 BTREE 索引与 Oracle 的有所不同,使得首列为空都可以无需回表。

最后:Oracle 的列能添加非空约束的一定要添加。

感谢各位的阅读!关于“Oracle 中复合索引与空值的索引怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计828字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久久久久国产精品视频 | 无码骚夜夜精品 | 成人6969www色在线 | 西西人体自慰扒开下部93 | 精品动漫一区二区三区 | 九九久久精品这里久久网 | 亚洲精品一区二区三区在 | 香艳刺激视频在线 | 国产精品久久久香蕉 | 丰满多毛的大隂户毛茸茸 | 无码一区二区三区视频 | 妺妺窝人体色www聚色窝仙踪 | 91丨九色丨首页 | 国产精品jizz视频 | 全免费a敌肛交毛片免费 | 精品久久久久久无码专区不卡 | 粉嫩00福利视频在线精品 | 成人欧美视频在线看免费 | 国产超碰人人模人人爽人人添 | 亚洲成人毛片 | 婷婷丁香五月六月综合激情啪 | 人人99 | 欧美一a级淫片免费视频 | 国产精品毛多多水多 | 国产做爰又粗又大又爽动漫 | 欧美一级做a爰片久毛片 | 日本xxxx色视频在线观看 | 精品国产天堂综合一区在线 | 中文字幕精品一区二区三区在线 | 日韩欧美亚洲一区 | 久草免费在线视频 | 无码精品尤物一区二区三区 | 欧美成人在线免费观看 | 91精品国产一区二区三区四区 | 日射精情感性色视频 | 精品在线观看视频 | 国产高清一区二区三区视频 | 亚洲国产成人精品91久久久 | 强插女教师av在线 | 欧美成人观看免费版 | 专干老熟女视频在线观看 |