중복없이 삽입하는 두 가지 방법을 알고 있습니다. 첫 번째는 WHERE NOT EXISTS
절 사용 :중복 된 행을 삽입하는 것을 피하기 위해 더 빠른 SQL 패턴은 무엇입니까?
INSERT INTO table_name (col1, col2, col3)
SELECT %s, %s, %s
WHERE NOT EXISTS (
SELECT * FROM table_name AS T
WHERE T.col1 = %s
AND T.col2 = %s)
다른하고있다을 LEFT JOIN
:
INSERT INTO table_name (col1, col2, col3)
SELECT %s, %s, %s
FROM (SELECT %s, %s, %s) A
LEFT JOIN table_name B
ON B.COL1 = %s
AND B.COL2 = %s
WHERE B.id IS NULL
LIMIT 1
빨리 다른 것보다있는 것과 같은 일반적인 규칙이 있는가, 아니면 테이블에 의존 않습니다 ? 두 가지 방법보다 나은 다른 방법이 있습니까?
첫 번째 예에서 SELECT *를 원하십니까? 모든 열을 선택 하시겠습니까? 일반적으로, 그렇게하지 않을 것이지만 나는 포스트 그레스 전문가가 아니다. – DOK
EXPLAIN을 사용하여 쿼리를 실행하고 게시 할 수 있습니까? 분석 도구는 이러한 질문에 대한 답변을 제공합니다. – Freiheit