2 개의 매우 큰 배열 (크기는 2,500,000 개)이 있습니다. 나는이 어레이들 사이에 차이점을 찾아야한다. 차이점은 배열 1에 있지만 배열 2에없는 값을 갖는 결과 배열이 필요하다는 것을 의미합니다. array_diff()을 사용했지만 30 분 이상 소요됩니다!PHP의 두 대형 배열 간의 차이점을 찾는 가장 좋은 방법
첫 번째 배열은 하나의 DB에서 나오고 두 번째 배열은 다른 db에서옵니다. 동일한 데이터베이스 서버에 있지 않습니다. 배열의 크기가 다릅니다. 나는 엄청난 수의 모바일 번호를 다루고있다. 하나의 목록에 있지만 다른 목록에없는 휴대 전화 번호를 찾아야합니다.
배열은 숫자 키가있는 일반 배열입니다. 비교 코드는 다음과 같습니다 :
$numbers_list = array_diff($numbers_list, $some_other_list);
더 좋은 방법이 있습니까? 도와주세요.
필자는 PHP 내부에 익숙하지 않지만'array_diff()'는 몇 차례의 최적화 과정을 거쳤으며 자신이 롤백하는 일반적인 배열 차이 함수보다 빠를 가능성이 높습니다 . 데이터 구조에 대해 더 잘 설명해 주었다면,보고있는 특정 어레이의 차이점을 계산하는 더 빠른 방법이있을 수 있습니다. 또는 이전 주석가들이 말했듯이, 데이터베이스에서 diff를 먼저 가져올 수도 있습니다. –
숫자 (실수, 즉 정수로 해석 할 수있는 경우)를 둘 다 정렬 할 수 있어야하고 배열 1을 반복하면서 배열 2에서 'next'가있는 포인터를 2 진수 값 < value-in-1, 등등. 이 특별한 경우에 훨씬 빠를 수 있습니다. – Wrikken
그럴 경우 각 db의 데이터를 텍스트 파일로 덤프하고 PHP에서 시도하는 대신 diff와 같은 명령 줄 도구를 사용하여 비교하는 것이 더 쉽습니다. 또는 한 데이터베이스에서 덤프를 수행하고 두 번째 테이블에서 임시 테이블로로드 한 다음 SQL을 사용하여 비교를 수행하십시오. –