SAS:没有 运行 的查询的近似 runtime/processing 时间
SAS: Approximating runtime/processing time for a query without running
想知道是否有一种方法可以在不实际处理查询的情况下估算查询的总 运行 时间?
我发现 运行 特定查询可能需要几个小时,我想知道大概的完成时间会派上用场,因为有时我会因为等待查询完成而被困在工作中。
抱歉不确定这是否是一个愚蠢的问题我对 SAS 有点陌生。
谢谢大家。
这取决于您对所处理数据的了解程度。没有一种简单的方法可以保证在所有情况下都适用,因为影响查询性能的因素太多了。也就是说,您可以使用一些启发式方法:
- 如果您要读取大型 table 中的每一行,请先尝试读取其中的一小部分,然后再按比例放大,以了解读取的数据占总查询执行时间的比例。
- 尝试 运行 将您的查询与
proc sql inobs = 100 _method;
结合起来,以了解查询规划器正在选择哪种类型的连接。如果有任何笛卡尔连接(日志输出中的 sqxjsl
),您的查询将花费 至少 O(m*n) 到 运行,其中m 和 n 是要连接的 table 中的行数。
- 检查 table 上是否有任何可能加快查询速度的索引。
想知道是否有一种方法可以在不实际处理查询的情况下估算查询的总 运行 时间? 我发现 运行 特定查询可能需要几个小时,我想知道大概的完成时间会派上用场,因为有时我会因为等待查询完成而被困在工作中。
抱歉不确定这是否是一个愚蠢的问题我对 SAS 有点陌生。
谢谢大家。
这取决于您对所处理数据的了解程度。没有一种简单的方法可以保证在所有情况下都适用,因为影响查询性能的因素太多了。也就是说,您可以使用一些启发式方法:
- 如果您要读取大型 table 中的每一行,请先尝试读取其中的一小部分,然后再按比例放大,以了解读取的数据占总查询执行时间的比例。
- 尝试 运行 将您的查询与
proc sql inobs = 100 _method;
结合起来,以了解查询规划器正在选择哪种类型的连接。如果有任何笛卡尔连接(日志输出中的sqxjsl
),您的查询将花费 至少 O(m*n) 到 运行,其中m 和 n 是要连接的 table 中的行数。 - 检查 table 上是否有任何可能加快查询速度的索引。