如何优化批量插入?

时间:2019-04-25 12:21:28

标签: postgresql sql-insert

我的代码如下:

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;

0 个答案:

没有答案