跳转到主要内容

问题

Map 查找 (例如 a['key']) 的复杂度是线性的 (如此处所述) ,因此效率可能较低。这是因为,要从表中选取具有特定键的值,就需要遍历 Map 列中所有行 (N) 的全部键 (约 M) ,最终导致约 MxN 次 查找。 使用 Map 的 查找 可能比 String 列慢 10 倍。下面的实验也表明,冷查询也会出现约 10 倍的性能下降,而且处理的数据量相差多个数量级 (7.21 MB 对比 5.65 GB) 。
解决方案 为了优化该查询,我们可以新增一列,将其默认值设为 Map 列中某个特定键对应的值,再将其物化,以便为现有行补齐该值。这样一来,我们就在插入时提取并存储了所需的值,从而加快查询时的查找。
最后修改于 2026年7月3日