Ver Mensaje Individual
  #13  
Antiguo 23-06-2022
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Si puedes crear un procedimiento que te devuelva la lista de números ya no hay problemas.
Lo he probado en una base con 23.000 registros y ha tardado 31ms
La tabla tiene un índice único por el campo ID.

Código SQL [-]
/* Procedimiento que devuelve lista de numeros */
create procedure dame_rango (
    ini integer,
    fin integer)
returns (
    n integer)
as
begin
    n = ini;
    while (n <= fin) do
    begin
        suspend;
        n = n + 1;
    end
end

Código SQL [-]
/* Recorre lista de numeros y devuelve los que no existe en la tabla ARTICULOS */
WITH RECURSIVE N
AS (SELECT N
    FROM DAME_RANGO((SELECT MIN(ID)
                     FROM ARTICULOS),
                    (SELECT MAX(ID)
                     FROM ARTICULOS)))
SELECT N.N
FROM N
WHERE
NOT EXISTS(SELECT ID
           FROM ARTICULOS
           WHERE
           ID = N.N)
Responder Con Cita