原标题:什么是数据库驱动表如何选择驱动表数据库不同模式下对驱动表影响
什么是驱动表
驱动表(外层表)是在嵌套循环连接和哈希连接中,用来最先获得数据,并以此表的数据为依据,逐步获得其他表的数据,直至最终查询到所有满足条件的数据的第一个表。
驱动表——一个满足条件的记录的子集合
以某个表中满足条件的记录的子集合作为连接其他表的数据来源(ROW SOURCE)。这个子集合,才是真正的驱动表,不过通常都直接将最先按照条件或得子集合的那张表叫做驱动表。
驱动表务必要是小表
根据条件获得的子集合一定要小,如果大表获得的子集合很小,一样可以使用该这个大表作为驱动表。
RBO模式与CBO模式对驱动表的影响
在RBO模式下,表和WHERE条件中字段的书写顺序非常重要,数据库按照这个顺序选择驱动表;
在CBO模式下,数据库会根据数据库中的统计信息,以及WHERE条件中的预估结果集,自动识别驱动表,因此如果统计信息不准确,或SQL写法不当,都会让CBO选择错误的驱动表。
具体如何操作
根据业务确定主表,然后最大可能地在这个主表上增加限定条件,使得从该表上获得的数据最少,在关联其他表时,最好选择与其他表的主键字段、已经索引的字段进行比较。
根据业务的实际情况,评估关联各表的数据量和数据增长量,并分析关键条件字段的区分度,考虑在区分度高的字段或组合字段上创建索引,以最大限度地降低某个表的结果集,增加其作为驱动表的机会。
如果由于WHERE条件不太明确等因素,导致数据库选择错误的驱动表,可以添加提示,固定leading表等手段。
小表驱动大表
循环小表中每一条记录,用这每一条记录再去查询关联表。所以驱动表越小,循环的次数也就越少。返回搜狐,查看更多
责任编辑: