database - 如何让Greenplum 4.2.3只扫描指定分区?

标签 database database-performance query-performance greenplum

当我在 View 中使用 unnest() 并在选择语句中使用该 View 时,Greenplum 似乎无法仅搜索预期的分区并搜索主表的所有分区。当使用子查询而不是 View 时,同样的事情也适用。

例如:

Select something from (select unnest(an_array_field) from table_y) 
where date = 'somedate' and state = 'somestate'

我们目前有 2 个不同的服务器运行 2 个不同版本的 Greenplum。服务器 A 在旧版本 (4.2.1) 上运行,而服务器 B 在 4.2.3 上运行。运行上面相同的查询会产生不同的结果。服务器 A(旧)将在几秒钟内返回查询,而服务器 B(新)将永远返回。运行查询解释显示服务器 A 仅对其中一个分区进行扫描(在 where 子句中包含日期和状态),而服务器 B 将对每个分区进行扫描,从而导致速度变慢。

两个数据库的表结构是一样的。在没有 unnest 的情况下运行查询不会有问题。所以,我怀疑与新版本有关。我能做些什么来解决这个问题吗?

最佳答案

升级到更新版本的数据库。 4.2.5 是当前版本。即将发布的版本还将有一个新的查询规划器,如果升级到 4.2.5 没有帮助,它应该也会有所帮助。

关于database - 如何让Greenplum 4.2.3只扫描指定分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330395/

相关文章:

database - 理解 Heroku 的数据库存储

mysql - 比较数据以显示彼此相差 1000 以内的结果

java - 执行搜索的最佳方式

java - 我可以在删除查询中使用 SET LOCK_TIMEOUT 吗?

postgresql - 从 Postgres 数据库中快速删除

mysql - 执行 SQL 查询

ruby-on-rails - Belongs_to 与主键和外键的关联

database - ComponentACE 绝对数据库的密码恢复

mysql - 从非常大的 SQL 表中选择记录子集

mysql - 尽管使用 EXPLAIN 所示的索引,但跨数据库查询的运行时间异常长