2008-10-02 2 views

답변

3

내가 적합한 질문에 제안 중 하나를 생각합니다.

사용 방법에 따라 기본 키가없는 경우 새 행을 삽입 할 수있는 INSERT IGNORE를 수행하면 시간을 절약 할 수 있습니다. 존재하는 경우 오류가 무시되므로 정상적으로 계속할 수 있습니다.

사용법에 따라 다른 유사한 옵션으로는 REPLACE 또는 INSERT ON DUPLICATE KEY UPDATE 유형의 삽입이 있습니다. 기본 키가 이미있는 경우 기존 항목을 업데이트 할 수 있습니다. 그렇지 않으면 새 항목이 삽입됩니다.

1

첫 번째 작업을 수행하고 결과를 계산하십시오 (항상 0 또는 1). 쉽고 빠릅니다. 당신이 삽입 또는 업데이트 사이에 결정하려고하는 경우

0

Select count(key) into :result from table where key = :theValue 

는 오라클의 MERGE 문을 사용합니다. 나는 MS-SQL이 UPSERT 문과 같다고 생각한다.

-1

IF EXISTS를 사용하는 것이 더 직관적이고 간단 할 것이라고 생각합니다. 내가 할 것


IF EXISTS (SELECT key FROM table WHERE key = 'value') 
    PRINT 'Found it!' 
ELSE 
    PRINT 'Cannot find it!' 
+0

존재하는 경우 mysql의 일부가 아닙니다. –

1

: 다른

SELECT 1 FROM table WHERE id key = 'value' 

뭐든지 쿼리 최적화 조금 방해 할 가능성이 높다, 그래서 나는 그와 함께 다루고 싶어요.

편집 : 왜 내가 작동하지 않을지 알 수는 없지만, MySQL에서 그렇게 해본 적이 없다고 깨달았습니다.

0

mytable에서 SELECT 1 WHERE mykey = 'value'LIMIT 1

관련 문제