当内部客户只想返回一个结果*(以及相关的嵌套数据集(时,我正在尝试优化我的查询。我的目标是减少查询进程的大小。
然而,无论我查询的是1条记录(具有未测试的48000长度数组(还是整个数据集(10000条记录,具有未测试总数组长度514048748(,它似乎都是完全相同的值!
因此,我的表结果为一个记录查询:
SELECT test_id, value
FROM <my_table_reference>, unnest(TimeSeries)timeseries
WHERE test_id= "T0003" and SignalName = "Distance";
看起来像这样:
test_id | 值 |
---|---|
T0003 | 1.0 |
T0003 | 2.0 |
T0003 | 3.0 |
T0003 | 4.0 |
之所以会发生这种情况,是因为仍然需要进行全表扫描,以找到与指定ID相等的所有测试ID。
从您的示例中不清楚哪些列是timeseries
记录的一部分。如果test_id
不是其中之一,我建议将表聚集在test_id
列上。通过聚类,数据将根据test_id
列的内容自动组织。
因此,当您在该列上使用筛选器进行查询时,不需要进行完全扫描来查找所有值。
在此处阅读有关聚集表的更多信息。