【发布时间】:2013-04-24 05:17:43
【问题描述】:
例如,我在 Oracle 数据库中有一个名为 my_table 的表。它是日志表的类型。它有一个 incremental 列,名为“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 之间变化,是否可以向该表添加索引?
【问题讨论】: