我的代码如下:
LOOP
EXIT WHEN TIMESTAMP_START >= TIMESTAMP_END;
INSERT INTO datapoint_values (dp_id, ts, int_value)
VALUES (NODE_ID, TIMESTAMP_START, INIT_D);
INIT_D := smooth_random_double(INIT_D, STEP_D, MIN_D, MAX_D);
TIMESTAMP_START := TIMESTAMP_START + STEP;
END LOOP;
我正在制作很多(平均300000)的单刀片。有没有优化刀片的方法?例如,以某种方式将它们批处理在一起并执行批量插入。还是还有其他一些“低挂水果”?
编辑1
CREATE OR REPLACE FUNCTION smooth_random_double(VAL double precision, STEP double precision,
MIN double precision,
MAX double precision) RETURNS double precision AS
$rand_smooth_double$
BEGIN
VAL := VAL + random() * STEP * 2 - STEP;
IF VAL > MAX THEN
RETURN MAX;
ELSIF VAL < MIN THEN
RETURN MIN;
END IF;
RETURN VAL;
END;
$rand_smooth_double$ LANGUAGE plpgsql;