烦请解释一下“驱动表”的概念
2014-04-22 23:33
253 查看
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
相关文章推荐
- 有关数据对齐data alignment的很好的解释,做到底层开发比如驱动开发,这些概念很重要
- 在此说明一下什么是AJAX,并解释AJAX的初步概念...
- 【概念普及】很通俗的解释一下RESTful(表现层状态转移)架构风格
- 软件开发者面试百问-----解释一下什么是测试驱动开发,举出极限编程中的一些原则
- (学习经验)当概念不明白很痛苦的时候,网上搜一下看网友可能有清晰地解释!2009-12-18 19:46:34
- 逻辑概念解释:以SD驱动为例去解释成功将驱动移植到Uboot这句话的含义 + Uboot中的驱动和Linux内核中的驱动的区别和联系 + 如何在Uboot中实现某硬件的驱动的逻辑和思路
- 一些概念需要明确的解释一下
- linux驱动由浅入深系列:usb子系统之三(usb系统中的设备、配置、接口、端点概念及代码解释)
- 请解释一下集成运放虚短,虚断,虚地这几个概念
- 用汇编代码解释变量声明定义概念
- IMSI概念解释
- 标准差(standard deviation)和标准错误(standard error)你能解释一下?
- #扫疑贴#如何形象生动的解释ip地址、子网掩码、网关等概念?
- Struts2 - 属性驱动与模型驱动概念
- 背光驱动的基本概念
- 关于三角剖分和网格生成的几何名词概念解释
- Linux locale详解-仅用一小段文字就解释清楚了UTF-8, Unicode这些概念
- MinGW g++ 编译带静态变量的类时的问题,求高手解释一下!
- Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
- 耦合与耦合性概念解释(一)