例如,我在 Oracle 数据库中有一个名为 my_table 的表。它是日志表的类型。它有一个名为“id”和“registration_number”的增量列,对于注册用户来说是唯一的。现在我想获得注册用户的最新更改,所以我在下面写了查询来完成这个任务:
第一个版本:
SELECT t.*
FROM my_table t
WHERE t.id =
(SELECT MAX(id) FROM my_table t_m WHERE t_m.registration_number = t.registration_number
);
第二个版本:
SELECT t.*
FROM my_table t
INNER JOIN
( SELECT MAX(id) m_id FROM my_table GROUP BY registration_number
) t_m
ON t.id = t_m.m_id;
我的第一个问题是建议使用上述哪个查询,为什么?第二个问题是,如果有时该表中有大约 70.000 条插入,但插入的行数大多在 0 到 2000 之间变化,是否可以向该表添加索引?