두 개의 테이블, Items 및 Class_Items에 데이터를 삽입해야합니다. 세 번째 테이블 인 Classes는 여기에 관련되어 있지만 삽입되지는 않습니다.자동 증가 필드를 삽입하는 가장 좋은 방법은 무엇입니까? (PHP/MySQL)
Items의 기본 키는 Item_ID이며 자동 증가 정수입니다. 이 기본 키 외에 항목에는 고유 한 필드가 없습니다. Item_ID가 Class_Items의 Classes와 일치하는지 알아야합니다.
이것은 모두 PHP 인터페이스를 통해 수행됩니다. 가장 좋은 방법은 Item을 삽입하고 Item_ID를 Class_Items에 매치시키는 것이 무엇인지 궁금합니다. 여기에 내가 보는 두 가지 옵션이 있습니다 :
- INSERT 각 항목은 다음 Class_Items 삽입 쿼리의 ITEM_ID를 얻을 수에 mysql_insert_id()를 사용합니다. 즉, 모든 항목에 대해 하나의 쿼리 (총 수천 개의 쿼리)를 의미합니다.
- 다음 자동 증가 ID를 가져온 다음 $ item_id 변수에 계속 추가 할 수 있도록 Class_Items 테이블을 잠급니다. 이것은 단지 두 개의 쿼리를 의미합니다 (항목과 Class_Item에 대해 각각 하나씩)
가장 좋은 이유는 무엇입니까? 또한 비공개 대안이 있다면 가장 효율적인 모든 것을 열어 둡니다.
정기적으로 수천 개의 항목을 추가하는 경우가 아니라면 첫 번째 대안에서 언급 한 "쿼리 비용"은 일반적인 문제가되지 않을 것입니다. 처음 아이템을 가져 오는 동안 그것은 단지 당신을 물 것입니다. 그것은 분명히 당신의 구체적인 문제에 달려 있습니다. – eykanal
충분합니다. 나는 여전히 스테이크가 그렇게 높지는 않지만 어떤 것이 더 나은지 궁금해하고 있습니다. 앞으로 수십만 개를 처리 할 것입니다. – babonk
mysql_insert_id()는 쿼리가 아닙니다. 이전 질의의 값을 나타낼뿐입니다. 무시할 수없는 오버 헤드. – dkretz