Amazon redshift 红移扫描/返回的行数超过limit子句所需的行数

Amazon redshift 红移扫描/返回的行数超过limit子句所需的行数,amazon-redshift,Amazon Redshift,Redshift控制台显示Redshift正在扫描/返回的行数超过了limit子句所需的行数(注意:我的SQL客户端正在接收预期的行数)。此外,红移正在估计全序列扫描。我假设这种过度扫描/返回会减慢对SQL客户机的响应。为什么红移会这样做,我如何防止它以增加查询响应 这里,Ilimit 1但扫描/返回80行: 这里,I限制1000000但扫描/返回40000040行: 在这里,我选择top 1000*,但扫描/返回40040行: 这些查询是针对20节点群集运行的。当您使用limit it时

Redshift控制台显示Redshift正在扫描/返回的行数超过了limit子句所需的行数(注意:我的SQL客户端正在接收预期的行数)。此外,红移正在估计全序列扫描。我假设这种过度扫描/返回会减慢对SQL客户机的响应。为什么红移会这样做,我如何防止它以增加查询响应

这里,I
limit 1
但扫描/返回80行:

这里,I
限制1000000
但扫描/返回40000040行:

在这里,我
选择top 1000*
,但扫描/返回40040行:


这些查询是针对20节点群集运行的。

当您使用limit it时,这是红移功能,首先扫描所有数据,然后对其进行限制

要解决您的问题,请使用top*

示例如下:

查询从tablename limit 123456中选择*可写为从tablename中选择top 123456*


请让我知道在Redshift中需要更多帮助。

我建议在这里使用特定列,而不是
*
谢谢@RedBoy,但我需要每个列。截图来自哪里?是红移控制台还是SQL客户端?如果您说
限制1
,是否会发生这种情况?请发布您的完整信息sql@JonScott:
从限制2500000中选择*(我正在进行基准测试)我还尝试了
从中选择top 2500000*与以前相同:它返回了许多倍于我所需的行数到leader节点
TOP
LIMIT
在功能上是等效的,因此使用哪一个并不重要-结果将是相同的。