간의 주요 차이점은 무엇입니까 INSERT INTO table VALUES ..
와는 INSERT INTO table SET
?
예:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
그리고이 두 가지의 성능은 어떻습니까?
답변
내가 알 수있는 한 두 구문은 동일합니다. 첫 번째는 SQL 표준이고 두 번째는 MySQL의 확장입니다.
따라서 그것들은 정확히 현명한 성능이어야합니다.
http://dev.mysql.com/doc/refman/5.6/en/insert.html 은 다음과 같이 말합니다.
INSERT는 기존 테이블에 새 행을 삽입합니다. 명령문의 INSERT … VALUES 및 INSERT … SET 양식은 명시 적으로 지정된 값을 기반으로 행을 삽입합니다. INSERT … SELECT 양식은 다른 테이블에서 선택된 행을 삽입합니다.
답변
확장 기능은 삽입 및 업데이트에 비슷한 구문을 허용하기위한 것입니다. Oracle에서 유사한 구문 적 트릭은 다음과 같습니다.
UPDATE table SET (col1, col2) = (SELECT val1, val2 FROM dual)
답변
구문은 (어쨌든 MySQL에서는) 동일하기 때문에 구문을 선호합니다 INSERT INTO table SET x=1, y=2
. 특히 많은 열을 삽입 할 때 명령문에서 수정하기 쉽고 오류를 잡기가 더 쉽기 때문입니다. 10 또는 15 개 이상의 열을 삽입 해야하는 경우 (x, y) VALUES (1,2)
내 의견으로 는 구문 을 사용하여 무언가를 혼합하는 것이 정말 쉽습니다 .
다른 SQL 표준 간의 이식성이 문제인 INSERT INTO table (x, y) VALUES (1,2)
경우 선호 될 수 있습니다.
단일 쿼리에 여러 레코드를 삽입하려는 경우 INSERT INTO ... SET
구문이 작동 하는 것처럼 보이지만 다른 레코드 는 작동 하지 않습니다 . 그러나 대부분의 실제 경우에는 레코드 세트를 반복하여 삽입을 수행합니다.하지만 하나의 큰 쿼리를 구성하여 한 행의 테이블에 여러 행을 삽입하여 하나의 쿼리에 대한 쿼리를 생성하는 경우가 있습니다. 각 행의 성능이 향상 될 수 있습니다. 정말 몰라