Sql Teradata中top与sample的效率

Sql Teradata中top与sample的效率,sql,teradata,Sql,Teradata,在Teradata中,哪一种效率更高-示例还是顶部 由于样本是随机的,这是否会导致Teradata做更少的工作并导致更快的回报 通常,我只想看几行 线程相关: TOP通常是速度更快的一个,当返回足够的数据时,它会停止处理快捷方式 这个样本有更多的选择,并且在统计上是正确的。要实现这一点,它可能需要读取更多的数据块。TOP通常是速度更快的一个,当返回足够的数据时,它会停止处理快捷方式 这个样本有更多的选择,并且在统计上是正确的。要实现这一点,它可能需要读取更多的数据块。我认为不按顺序使用TOP比s

Teradata
中,哪一种效率更高-示例还是顶部

由于样本是随机的,这是否会导致
Teradata
做更少的工作并导致更快的回报

通常,我只想看几行

线程相关:
TOP通常是速度更快的一个,当返回足够的数据时,它会停止处理快捷方式


这个样本有更多的选择,并且在统计上是正确的。要实现这一点,它可能需要读取更多的数据块。

TOP通常是速度更快的一个,当返回足够的数据时,它会停止处理快捷方式


这个样本有更多的选择,并且在统计上是正确的。要实现这一点,它可能需要读取更多的数据块。

我认为不按顺序使用
TOP
sample
更好。这两种方法都会在显示结果之前对整个表达式求值


参考资料:

我认为不按订单使用
TOP
示例
更好。这两种方法都会在显示结果之前对整个表达式求值


参考资料:

从效率的角度来看:

使用
Top
而不使用时,订单将与
样本
大致相同


Top
按订购将导致更大的开销。

从效率的角度来看:

使用
Top
而不使用时,订单将与
样本
大致相同


Top
按排序将导致更大的开销。

我刚刚在一个大型Teradata数据集上运行了三个查询:

  • 从表样本10中选择*
  • 从表中选择*前10名(无订购人)
  • 从表中按列顺序选择*前10名
  • DBQL指标表明,到目前为止,没有订单的前10名是资源密集度最低的。我的I/O和CPU下降了约99%,只是从样本变为顶部

    因此,如果您的目标是纯粹的效率,那么没有Order by的TOP显然是TD的DBQL指标的赢家


    我刚刚在一个大型Teradata数据集上运行了三个查询:

  • 从表样本10中选择*
  • 从表中选择*前10名(无订购人)
  • 从表中按列顺序选择*前10名
  • DBQL指标表明,到目前为止,没有订单的前10名是资源密集度最低的。我的I/O和CPU下降了约99%,只是从样本变为顶部

    因此,如果您的目标是纯粹的效率,那么没有Order by的TOP显然是TD的DBQL指标的赢家



    这篇文章不是说不使用order by with top吗?这里没有答案。这篇文章不是说不使用order by with top吗?这里没有答案。那么这是否意味着只要你不使用order by on top,它们本质上是相等的?@NealParker我在个人电脑上对AdventureWorks2016数据库进行了测试并进行了比较执行计划。对于Top和Sample,我分别尝试了251001000、10000和50000。只要Order By不在里面,它们几乎是一样的。Teradata上的聚集索引?@Jason:你从哪里得到Teradata版本的AdventureWorks2016?还是您检查了SQL Server上的计划?@dnoeth,我检查了SQL Server上的执行计划。老实说,在我写答案时,我没有意识到Teradata是一个数据仓库产品。那么,这是否意味着,只要你在上面省去订单,它们基本上是相等的?@NealMarker我在个人电脑上对AdventureWorks2016数据库进行了测试,并比较了执行计划。对于Top和Sample,我分别尝试了251001000、10000和50000。只要Order By不在里面,它们几乎是一样的。Teradata上的聚集索引?@Jason:你从哪里得到Teradata版本的AdventureWorks2016?还是您检查了SQL Server上的计划?@dnoeth,我检查了SQL Server上的执行计划。老实说,在我写答案的时候,我没有意识到Teradata是一个数据仓库产品。那么,没有order by的top会被认为更高效吗?这是因为样本试图在统计上正确+选项,这可能导致读取更多数据块。是@Biswabid的链接给出了一个很好的解释。或者,正如您在链接中提到的“优化器可以自由选择它能找到的最便宜的计划,并在找到足够的行以返回时停止处理”,因此,没有order by的top会被认为更有效吗?这是因为样本试图在统计上正确+选项,这可能导致读取更多数据块。是@Biswabid的链接给出了一个很好的解释。或者,正如您提到的链接“优化器可以自由选择它能找到的最便宜的计划,并在找到足够的行返回时停止处理”,您可以添加DBQL度量吗?您确定I/O和CPU的99%下降只是从样本变为顶级吗?它和“秩序至上”相比怎么样?嘿,迪特,当然。我在上面的原始帖子中附上了指标的截图。这些都是在TD 15.10上运行的,在一个大约有12亿行的表上运行。我运行了两次示例查询以确认,因为我对结果感到惊讶。
    TotalIOCount
    是逻辑IO,您是否可以添加物理IO:
    ReqPhysical
    ?您是否可以添加DBQL指标?您确定I/O和CPU的99%下降只是从样本变为顶级吗?它和“秩序至上”相比怎么样?嘿,迪特,当然。我在上面的原始帖子中附上了指标的截图。这些都是在TD 15.10上运行的,在一个大约有12亿行的表上运行。我运行了两次示例查询以确认,因为我对结果感到惊讶。
    TotalIOCount
    是逻辑IO,您是否也可以添加物理IO:
    reqphysical