博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
烦请解释一下“驱动表”的概念
阅读量:4175 次
发布时间:2019-05-26

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

rule 下所谓驱动表

还有  nested loops  and  hash  join 之份
我们以 nested  loop 为例:
如果两个表连接字段都没有索引(通常这个时候是 sort  merge /  hash  join),则驱动表会选择后者
若两个表其中有一个有索引而另外一个没有索引,则驱动表是没有索引那一个,跟顺序无关
若两个表都有索引,则驱动表为 后面 那一个表
所以事实上,RULE下,只有在两个表都存在连接字段的索引的情况下才需要考虑顺序问题
也就是小表放在后面大表放在前面(当然到底哪个好这实际上还跟  符合条件的记录数、数据分布等因素相关!!!,所以应该以实际测试为准)
如果是 CBO 下则跟顺序无关

关键的

是明白执行计划
而不在于记什么规则
举例,表连接返回一条记录
存在两个表,一个 10条记录 ,一个1000万条记录
若2表都存在连接字段索引,若以小表为驱动表,则
代价:
10* (通过索引在大表查询一条记录的代价)
若以大表为驱动表:
1000万 * (通过索引在小表中查询一条记录的代价)
通过索引获取一条记录,10rows的表,代价通常在 3 blocks
索引2块,表一块
而如果是1000万的表,索引可能达到4块表一块
这样一来参考上面的计算,你说哪个更好?很显然!

FROM: http://www.itpub.net/thread-144375-2-1.html

转载地址:http://rgvai.baihongyu.com/

你可能感兴趣的文章
原生Android系统的第一次开机google验证的解决
查看>>
S5P4418与S5P6618的Android boot.img的解压与压缩, Sparse ext4文件系统
查看>>
【EVB-335X-II试用体验】 u-boot与kernel的编译以及本地repo的建立
查看>>
【EVB-335X-II试用体验】 上手试用与资源使用
查看>>
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用
查看>>
<<C++程序设计原理与实践>>粗读--chapter0 chapter1 chapter2
查看>>
<<C++程序设计原理与实践>>粗读--chapter3 chapter4 Chapter5
查看>>
<<C++程序设计原理与实践>>粗读 -- chapter8 Chapter9
查看>>
Linux Qt程序打包成一个可执行文件
查看>>
DragonBoard 410C中的Fastboot与调试串口注意事项
查看>>
跨系统的录音格式兼容性问题: iOS Android
查看>>
JVM 的垃圾回收器
查看>>
Mybatis的缓存
查看>>
@validated注解异常返回JSON值
查看>>
@JsonFormat注解使用
查看>>
Spring boot集成jxls实现导入功能
查看>>
Spring boot读取配置的方式(指定配置文件)
查看>>
Spring Boot切换不同环境配置
查看>>
Spring cloud之Ribbon搭建
查看>>
TreeMap 与 HashMap 的区别
查看>>