它说表装饰器更具成本效益,所以我做了我的测试:
从[myDataSet.myTable@-86400000--30000]中选择计数(不同的ID)
它显示只会扫描15.6 GB的数据 有效:此查询在运行时将处理15.6 GB。
当我添加一个where子句时,它显示它将处理双倍数据大小:
从[myDataSet.myTable@-86400000--30000]中选择计数(不同的ID),其中col =' something' 有效:此查询在运行时将处理34.0 GB。***
为什么会有区别?我怎么能避免这种情况?
答案 0 :(得分:5)
如果col不是“不同ID”,那么这是正常的。
大查询“已处理的大小”取决于它需要扫描的COLUMNS的数量。如果你在回归中将col放在distinctID的顶部,那么它将需要读取两者。有意义的是大小翻倍,不是吗?
尝试检查数据select distinctID, col from [myDataSet.myTable@-86400000--30000]
的数量。我有一种感觉它会一样:)