我有一张包含 15,000,000 条记录的表。这些记录可以根据某些匹配字段相互关联(通常单个组中最多 3 或 4 个)。每条记录还有一个与之关联的日期,但是该日期不一定与它被加载到表中的日期/顺序相关。
这些记录定期用于更新数据库中的其他记录。不过,我只关心单个组中的 LATEST 记录,并且有 1500 万条记录(正在更新另外 1000 万条记录),我想确保忽略其他所有内容。如果最新记录已经有“更新”标志,我也想跳过更新。
我一直在使用这样的视图来收集每个组中的最新记录:
SELECT a, b, c, max(scan.timestamp) AS latest_scan
FROM scan
GROUP BY a, b, c;
然后我在 my 中使用一个WHERE
子句UPDATE
来忽略任何带有更新标志的记录。
有这么多记录,我可以使用视图吗?我已经看到人们开始动态创建真正的可索引表以提高性能,但我仍然觉得这需要很长时间。这是我可以从中受益的东西吗?