2011-03-05 5 views
6

이 테이블이 있습니다.삽입하는 가장 빠른 방법, 존재하지 않는 경우, MySQL에서 ID를 얻으십시오

| id | domain | 

id이 기본 키입니다. domain은 고유 키입니다. 이미 존재하지 않는 경우,

  1. 가 새 도메인을 삽입 :

    나는 싶습니다.
  2. 해당 도메인에 대해 id을 가져옵니다.

는 지금은 이런 식으로 일을 해요 :

INSERT INTO domains 
SET domain = 'exemple.com' 
ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id) 

그런 다음 PDO::lastInsertId()id를 얻을 수 있습니다.

그러나 이것이 가능한 한 빠르다는 것이 중요합니다. 그래서 나는 물을 것입니다. 더 좋은 방법으로 이것을 할 수 있습니까?

+0

'ol li code'에 대한 CSS는 약간 꺼져 보입니까? – Znarkus

+0

이드는 무엇입니까? 기본 키로 사용됩니까? 그렇지 않으면 애플리케이션에 불투명합니다. –

+0

예. 요청 로그에 사용하고 varchar가 많은 행이있는 테이블에 대해 확장 성이 있다고 생각했습니다. – Znarkus

답변

1

누군가가 다르게 말할 때까지는 아니요, 가장 좋은 방법은입니다.

0

이 방법에는 "중복 키를 찾을 때마다 자동 증가 ID가 하나씩 증가합니다"라는 부작용이 있습니다.
처음으로 값으로 exemple.com을 사용하여 쿼리를 실행하면 이 항목을 만듭니다. 그 질문을 13 번 더 반복한다고 해봅시다. 그 후 당신은 당신이 대신 자동 증가 ID = 당신은 15

1 exemple.com
15 xyz.com
25 pqr.com를 얻을이
50 THG의보고 놀라게 될 것입니다 xyz.com으로 시도 .com

+0

이 질문을 참조하십시오 http://stackoverflow.com/questions/548541/insert-ignore-vs-insert-on-duplicate-key-update – Znarkus

+0

중복 키 업데이트에서 삽입 ...의 성능은 하위입니다. 읽어보십시오 : http://mikefenwick.com/blog/insert-into-database-or-return-id-of-duplicate-row-in-mysql/ – AlphaLeader

관련 문제