【发布时间】:2016-03-16 06:04:03
【问题描述】:
SELECT
a.id,
b.url as codingurl
FROM fact_A a
INNER JOIN dim_B b
ON strpos(a.url,b.url)> 0
- Fact_A 中的记录数:200 万
- Dim_B 中的记录数:1500
- 执行时间:10 分钟
- 节点数:2
有人可以帮助我理解为什么上述查询需要更多时间来执行吗?
我们已经在 Fact_A 中声明了分布键,以便在两个节点中适当地均匀分布记录,并且在 Fact_A 中的 URL 上创建了排序键。
Dim_B 表是用DISTRIBUTION ALL 创建的。
【问题讨论】:
-
您能否提供更多信息,具体来说您使用的是哪种节点,集群中有多少个节点以及A和B的表架构
-
“为什么上述查询需要更多时间来执行”是什么意思?时间多于什么?或者你只是说你希望它更快?请记住——它必须进行 30 亿次字符串比较,与普通比较(例如 =、=)相比,
strpos不是连接表的有效方法。 -
您能否提供一些与
strpos一起使用的a.url和b.url的示例值?可能有一种更有效的方式来进行查询。
标签: amazon-web-services amazon-redshift