根据小表的结果修剪大表

编程入门 行业动态 更新时间:2024-10-25 02:23:02
本文介绍了根据小表的结果修剪大表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在尝试了解是否可以减少在以下方案中扫描的分区数。

我有两个表:

Table A (100M rows) JOIN_KEY DATA_1 DATA_2 etc. Table B (40K rows) JOIN_KEY FILTER_COL_A FILTER_COL_B

当用户想要查询表A中的数据时,需要通过FILTER_COL_A&;FILTER_COL_B过滤,从表B中获取相应的JOIN_KEY值。

当筛选FILTER_COL_A&;FILTER_COL_B时,它将为JOIN_KEY生成非常少的值-通常只有3个,但也可能更多。

表A按JOIN_KEY群集化。

当我编写一个查询来连接JOIN_KEY上的两个表,然后对FILTER_COL_A和FILTER_COL_B进行筛选时,将扫描表A上的所有分区,而不是800个分区中的大约5个分区。

我不能像在运行时那样直接筛选JOIN_KEY,在从表B返回数据之前,我不知道它应该是什么值。

有没有一种方法可以构造查询,以便Snowflake在联接筛选器中使用表B的结果并修剪表A的大部分分区?

推荐答案

发布此答案,以防其他人遇到此问题。

在编写本文时,它似乎只有在表A和表B上的JOIN_KEY列的数据类型均为number(38,0)时才有效。

当使用number (38,0)时,Snowflake根据FILTER_COL_A和FILTER_COL_B过滤后的表B的结果修剪表A上的部分。

更多推荐

根据小表的结果修剪大表

本文发布于:2023-11-28 10:19:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1642005.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!