我拥有11G数据仓库的(相对)基本访问权限。我做的一些处理涉及通过一些计算将大表连接到大表,或者将附加列添加到基本数据集。我通常将数据导入到我自己的模式中进行计算,但是仓库处理能力有限,并且一些查询需要很长时间,因为大多数工作涉及影响或将数据连接到表的所有行(解释计划上的大量全表扫描! )。
我的问题是,如果我在两个表上有一个参考号作为主键,如果我也使用此参考号的散列版本,我会看到任何性能提升吗?
如果没有,在这些情况下还有其他方法可以提升性能吗?
答案 0 :(得分:1)
如果你是equijoining那么你可能无论如何都要获得一个哈希连接,并且将连接键转换为哈希值是隐含的。
在大型表之间获得更好的equijoin性能的最佳方法是在连接键上对它们进行散列分区。
分区连接通过避免散列表溢出到磁盘(如果它们超过特定大小)来提供性能优势,因此您可以选择分区数来尝试将散列连接上的内存分配保持为低。