나에게 키와 같은 넓은 열을 사용하는 것은 좋지 않은 생각이지만, 여러분이 제안한 것과는 분명히 다른 것을 할 수 있습니다. MD5를 사용할 필요조차 없으므로 충돌을 거의 발생시키지 않는 해시 함수 만 있으면되지만 고유성은 필요하지 않습니다. CRC32
은 작은 값을 생성하며 매우 빠릅니다.
CREATE TABLE data (lots_of_text VARCHAR(500));
이로 변경을 :
이 테이블은 다음과 같습니다 말
INSERT INTO data (lots_of_text, text_hash)
VALUES ("lots and lots of text", CRC32("lots and lots of text"));
을 그리고 당신은 검색 할 수 있습니다
CREATE TABLE data (text_hash INT, lots_of_text VARCHAR(500), INDEX (text_hash));
당신이 행을 삽입 할 때 당신이 할 다음과 같은 행 :
SELECT lots_of_text FROM data
WHERE text_hash = CRC32("lots and lots of text")
AND lots_of_text = "lots and lots of text";
쿼리 text_hash
에 인덱스를 사용하지만 CRC32
때문에 여전히 평등의 lots_of_text
필드를 확인해야 고유 한 값을 생성하지 않습니다 -하지만 기껏 몇 행이 동일한이 때문에 쿼리는 여전히 빠른 것 해시시.
이 변형은 처음 50 자 정도를 해시로 사용하는 것이므로 동일한 처음 50 자의 행 수가 매우 낮습니다.
varchar 열에 어떤 종류의 데이터를 저장합니까? 구체적인 예를 들어주세요. – Theo
이 필드에는 웹 사이트 링크가 있습니다. – Riz