Как оптимизировать массовую вставку? - PullRequest
0 голосов
/ 25 апреля 2019

Мой код выглядит следующим образом:

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;
...