고유 한 ID가 약 110 만 개가 있는데, 해당 데이터베이스의 해당 레코드가없는 레코드를 결정해야합니다. ID 세트는 데이터베이스에서도 제공되지만 동일한 것은 아닙니다. PHP와 MySQL을 사용하고 있으며 충분한 메모리가 있습니다 - PHP는 15GB RAM이있는 서버에서 실행되며 MySQL은 7.5GB RAM이있는 자체 서버에서 실행됩니다.PHP와 대용량 MySQL 데이터 세트 비교
일반적으로 모든 ID를 하나의 쿼리에로드 한 다음 SELECT 쿼리의 IN 절과 함께 사용하여 한 번에 비교할 수 있습니다.
지금까지 나의 시도는 참을 수 없을만큼 오랜 시간이 걸리거나 CPU를 100 %까지 끌어 올리는 스크립트를 만들어 냈습니다.
이렇게 큰 데이터 세트를로드하고 비교하는 가장 좋은 방법은 무엇입니까?
not in 절 대신 왼쪽 결합을 사용하십시오. –
당신은 메모리에 데이터 셋을로드 할 수 있도록 MySQL 인스턴스를 구성해야합니다. (1.1 mil은 7.5GB 램에 쉽게 들어 맞아야합니다.) 닉이 말했던 것을 수행하고, 대신에 왼쪽 조인을 사용하십시오. 쿼리가 매우 빠릅니다. –