Hola Casimiro,
Mira las tablas y sus indicies son los siguientes
Código SQL
[-]
CREATE TABLE "StockPendientes" (
"idEmpresa" "tipoCodigoEmpresa" NOT NULL,
"idAlmacen" "tipoCodigoAlmacen" NOT NULL COLLATE ISO8859_1,
"idProducto" "tipoCodigoProducto" NOT NULL COLLATE ISO8859_1,
"PendientesRecibir" "tipoUnidades",
"PendientesFabrica" "tipoUnidades",
"PendientesServir" "tipoUnidades",
"StockReservado" "tipoUnidades",
"StockEntrada" "tipoUnidades");
ALTER TABLE "StockPendientes" ADD CONSTRAINT "PK_StockPendientes" PRIMARY KEY ("idEmpresa", "idAlmacen", "idProducto");
CREATE UNIQUE INDEX "PK_StockPendientes" ON "StockPendientes" ("idEmpresa", "idAlmacen", "idProducto");
Código SQL
[-]
CREATE TABLE "StockTotalPorAlmacen" (
"idEmpresa" "tipoCodigoEmpresa" NOT NULL,
"idAlmacen" "tipoCodigoAlmacen" NOT NULL COLLATE ISO8859_1,
"idProducto" "tipoCodigoProducto" NOT NULL COLLATE ISO8859_1,
"QExistencias" "tipoUnidades");
ALTER TABLE "StockTotalPorAlmacen" ADD CONSTRAINT "PK_StockTotalPorAlmacen" PRIMARY KEY ("idEmpresa", "idAlmacen", "idProducto");
CREATE UNIQUE INDEX "PK_StockTotalPorAlmacen" ON "StockTotalPorAlmacen" ("idEmpresa", "idAlmacen", "idProducto");
Como el objetivo de este procedimiento es cruzar ambas tablas pues en los casos que hay un cierto volumen de registros la cosa se demora mucho y lo hace inoperativo. Por mucho puede ser unos >4000 registro en StockTotalPorAlmacen y >800 registros en StockPendientes.
El plan usado es que utilizada FB, pero segun puedo ver en el IBManager si utiliza la clave principal para las busquedas.