snowflake-cloud-data-platform - 一旦找到足够的行,雪花 TOP/Limit/Fetch 是否会停止处理?
问题描述
当您在查询中使用 Snowflake TOP 子句时,SQL Server 引擎是否会在其足以满足需要返回的 TOP X 时停止搜索行?
解决方案
我认为这取决于您查询的其余部分。例如,如果您使用TOP 10
但不提供order by
then yes,则它会在返回 10 条记录后立即停止,但您的结果是不确定的。
如果您使用order by
,则必须首先执行整个查询,然后才能返回前 10 个结果,但您的结果将是确定性的。
这是一个真实的例子。如果我SAMPLE_DATA.TPCH_SF10000.CUSTOMER
使用 a 在表上运行选择,limit 10
它将在 1.8 秒内返回(无缓存)。该表中有 1,500,000,000 行。如果我然后检查查询计划,它只扫描了表的一小部分,即 6,971 个分区中的 1 个:
您可以看到,当从初始表扫描中流回 10 条记录时,它将返回,因为它无需执行任何其他操作。
推荐阅读
- scala - Print Source[ByteString, NotUsed] values to console
- python - 编译sonic时遇到错误;
- swiftui - 为什么 withAnimation 不使用 .animation
- java - Spark Java 中的时区转换问题
- reactjs - React - 未捕获的类型错误:无法读取未定义的属性“toLowerCase”
- django - 请帮助我解决 Django 和 PostgreSQL 与 docker 的错误
- email - 为通过 AWS 发送的电子邮件更正 DKIM、SPF、DMARC 记录设置 - SES
- javascript - 如何在左右滚动事件上知道容器 div 中心的子 div?
- angular - Karma/Jasmine angular spyOn 总是返回存根类的值
- unity3d - 如何在 Unity 中尽可能优化地检测与表面的碰撞?