Postgresql Postgres:获取特定范围内表中的下一个免费id(不使用序列)

Postgresql Postgres:获取特定范围内表中的下一个免费id(不使用序列),postgresql,Postgresql,我有一个表t\u user: CREATE TABLE t_user ( c_id bigint NOT NULL, c_lastname character varying(255) ) 该表没有使用任何序列来生成ID,而是在Postgres之外进行计算(不要问,也不要关心这可能导致的问题)。 现在,在0到1000之间有一些“漏洞”,我需要知道并填补它们 是否可以制定一个Postgres查询,为我提供该表中0到1000范围内所有未使用的ID?这是使用和外部联接的典型情况: SELEC

我有一个表
t\u user

CREATE TABLE t_user
(
  c_id bigint NOT NULL,
  c_lastname character varying(255)
)
该表没有使用任何序列来生成ID,而是在Postgres之外进行计算(不要问,也不要关心这可能导致的问题)。 现在,在0到1000之间有一些“漏洞”,我需要知道并填补它们


是否可以制定一个Postgres查询,为我提供该表中0到1000范围内所有未使用的ID?

这是使用和外部联接的典型情况:

SELECT i FROM t_user RIGHT JOIN generate_series(0,1000) as i ON (c_id=i)
 WHERE c_id is null;

如果范围较大,则速度较慢。是否可以对树进行优化?