关联规则挖掘与多维索引构建的优化策略
1. 关联规则挖掘中的查询评估与成本分析
在关联规则挖掘中,对于每个候选项目集,其记录数量与其支持度相关。$S(Ck)$ 可以通过累加 $Ck$ 中所有项目集的支持度估计值来估算。一个较好的候选项目集支持度估计值是其所有子集支持计数的最小值。
该计划的总成本用操作符成本表示为:
${ \text{join}(ck * 81 - 1, R, ck * \sim 1) + \text{join}(Ck * sk - 1, R, s(c\sim)) + \text{group}(s(ck), ck) }$
在这个计划里,会将 $k$ 份 $T$ 进行连接,得到的 $k$ 项组合再与 $ck$ 连接,以过滤掉非候选项目组合。最终的连接结果会按 $k$ 项进行分组。连接 $Z$ 份 $T$ 的结果是事务所有可能的 $Z$ 项组合集合。由于候选项目集中的项目是按字典序排序的,所以可以添加额外的连接谓词,将连接结果限制为 $Z$ 项组合。当 $ck$ 是最外层关系时,这些谓词则不需要。一个具备挖掘感知能力的优化器应该能够恰当地重写查询。最后一次连接会产生 $S(Ck)$ 条记录,总成本为:
${ \text{join}(C(N, Z) * T, R, C ( N, Z + 1) * 2’) + \text{join}(C(N, k) * T, Ck, S(Ck)) + \text{group}(S(Ck), Ck) }$,其中 $C(N, 1) * T = R$
子查询优化利用了候选项目集之间的公共前缀。展开所有子查询会得到一个结构类似于 KwayJoin 计划树的查询树。子查询 $\&I$ 会产生 $dk
超级会员免费看
订阅专栏 解锁全文
1148

被折叠的 条评论
为什么被折叠?



