我有一张接近八千万条数据的彩虹表,然后里面有二十多万条的重复数据,我想使用GROUP BY 进行分组,但是使用了GROUP BY语句以后,mysql会生出一张零时表,而零时表,把我的硬盘全部沾满了,所以,求个办法,能帮去去处这重复的数据?
GROUP BY
我的sql:
sql:
SELECT COUNT(id) FROM password WHERE length = 4 GROUP BY ciphertext
id
password
length
ciphertext
ringa_lee
이런 종류의 문제를 해결하기 위해 SQL 문을 사용하는 것은 데이터베이스가 감당할 수 없기 때문에 권장되지 않습니다. 프로그램을 사용하여 구현할 수 있습니다(예: Python 스크립트 작성). 단계는 다음과 같습니다.
테이블 A의 테이블 구조(8천만 행)를 복사하여 빈 테이블 B를 생성합니다.
B의 암호문 열에 고유 인덱스를 만듭니다.
테이블 A의 각 행을 탐색하여 테이블 B에 삽입합니다. REPLACE 또는 INSERT INTO ... ON DUPLICATE KEY UPDATE ...를 사용할 수 있습니다. p>
REPLACE
INSERT INTO ... ON DUPLICATE KEY UPDATE ...
테이블 B의 데이터를 확인합니다. 결과가 정확하면 테이블 A를 삭제하고 테이블 B의 이름을 테이블 A로 변경합니다.
이런 종류의 문제를 해결하기 위해 SQL 문을 사용하는 것은 데이터베이스가 감당할 수 없기 때문에 권장되지 않습니다. 프로그램을 사용하여 구현할 수 있습니다(예: Python 스크립트 작성). 단계는 다음과 같습니다.
테이블 A의 테이블 구조(8천만 행)를 복사하여 빈 테이블 B를 생성합니다.
B의 암호문 열에 고유 인덱스를 만듭니다.
테이블 A의 각 행을 탐색하여 테이블 B에 삽입합니다.
REPLACE
또는INSERT INTO ... ON DUPLICATE KEY UPDATE ...
를 사용할 수 있습니다. p>테이블 B의 데이터를 확인합니다. 결과가 정확하면 테이블 A를 삭제하고 테이블 B의 이름을 테이블 A로 변경합니다.