Итак, возникает такая ситуация, когда у вас есть таблица, в которую вы хотите вставлять строки в пары с ссылкой друг на друга. Точно так же, как в двухстороннем учете, каждый элемент имеет противоположность, как пара его. Эта таблица:Самый быстрый запрос для вставки нескольких пар строк с перекрестной ссылкой в PSQL?
CREATE SEQUENCE tbl_item_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
CREATE TABLE tbl_item (
id integer NOT NULL PRIMARY KEY DEFAULT nextval('tbl_item_id_seq'),
pair_id integer,
label character varying(50) NOT NULL,
FOREIGN KEY (pair_id) REFERENCES tbl_item (id)
);
ALTER SEQUENCE tbl_item_id_seq OWNED BY tbl_item.id;
Элементы создаются процедурно. Как правило, сразу возникает несколько пар, и конечной целью было бы вставить все пары с одним запросом. Я решил это с PHP, где я вставлял строку, возвращал ее id, вставлял другую строку с заполнением парой и обновлял первую строку с идентификатором второго. Это означает, что 3 db-запрос запущен с PHP, и поскольку генерируется несколько пар, это означает number_of_pairs * 3 запроса. Когда у меня около 100 пар, это означает 300 запросов и дает хорошие накладные расходы во время обработки, что я хотел бы свести к минимуму.
Итак, задан вопрос, какой самый быстрый способ вставить пары строк со ссылкой на идентификатор друг друга в одну таблицу в PSQL?