그래서 몇 개의 간단한 열, 자동 증가 및 해시 (varchar, UNIQUE)가있는 mysql 테이블을 상상해보십시오.MySQL 고유 한 해시 삽입
mysql에 열을 추가하고 다중 쿼리없이 고유 한 해시를 생성하는 쿼리를 제공 할 수 있습니까?
현재이 문제를 해결하기 위해 생각할 수있는 유일한 방법은 당분간입니다. DB에 더 많은 항목이있을수록 프로세서 집약적으로 될 것이라고 걱정합니다.
여기에 분명히 검증되지 않은 일부 의사 PHP,하지만에 걸쳐 일반적인 생각을 가져옵니다 위의 예에서, 해시 열이 UNIQUE 것
while(!query("INSERT INTO table (hash) VALUES (".generate_hash().");")){
//found conflict, try again.
}
, 그래서 쿼리가 실패합니다. 문제는 db에 500,000 개의 항목이 있고 base36 해시 생성기에서 4 개의 문자로 작업하고 있다고 가정 해 보겠습니다. 갈등의 가능성은 3 분의 1에 가까워 질 것입니다. 따라서 160,000 개의 쿼리를 실행할 수는 없습니다. 사실, 5 세 이상은 받아 들일 수 없다고 생각합니다.
그래서 순수 SQL로이 작업을 수행 할 수 있습니까? base62, 6 char 문자열 (예 : "j8Du7X", chars a-z, A-Z 및 0-9)을 생성하고 last_insert_id를 업데이트하거나 삽입하는 동안 생성하십시오.
MySQL을 사용하여 기본 CRUD를 처리 할 수 있지만 JOIN도 MySQL의 안락 영역 밖에 있지 않으므로 이것이 케이크 인 경우 내 무지를 용서하십시오.
아이디어가 있으십니까? 순수한 MySQL 또는 PHP & MySQL을 사용하는 것을 선호하지만 지옥, 만약 다른 언어가 이것을 제대로 수행 할 수 있다면 스크립트와 AJAX도 만들 수 있습니다.
감사합니다.
왜 해시를 원하십니까? 같은 목적으로 auto_increment 열을 사용할 수 없습니까? – zneak
URL 문자열에 사용할 base62, 6 char 해시가 필요합니다. auto_inc를 base62로 변환 할 수는 있지만 수동으로 엔트리를 만들 수는 없습니다. (TheLnk - 유효한 base62 해시입니다.하지만 auto inc에서 작업하고 있다면 추가 할 수 없습니다. ..). – Jesse