2010-07-07 4 views
2

프로그래머/플러그인 작성자가 간단한 방법으로 주석 스레드를 구현할 수있는 주석 처리 메커니즘을 응용 프로그램에 구축하고 있습니다.긴 varchar 키를 조회 키로 사용하는 방법

내가 원했던 방식은 스레드의 고유 키를 사용하여 개발자가 힘든 일을 한 주석 스레드에 대한 고유 식별자를 사용하는 것입니다.이 코드는 어디서나 코드를 배치 할 수 있습니다. 신청.

프로그래머가 "내 이미지"라고 부르는 이미지 업로드 플러그인에 주석을 추가하려고한다고 가정 해 봅시다. 다른 개발자가 더 복잡한 일을해야 할 수도 있습니다

insertCommentThread('myimages:340'); 

그는 위키 항목에 주석을 추가하고 싶어 : 코드에서 그는 다음과 같이 호출 할 수 있습니다

insertCommentThread('wiki-entry-page-name-it-could-be-long'); 

그래서 개발자가 스레드를 호출 할 수 있습니다 그들이 좋아하는 이름.

키의 길이가 길어질 경우 사물의 속도가 조금 걱정되므로 조금 다른 형식으로 키를 저장하고 싶습니다.

그래서 제 질문은

는 작고 조회 할 빠르게되도록 몇 가지 인코딩 방식으로 문자열 키를 저장하는 방법이 있나요 ...인가?

BTW

는 (... 내가 문자열을 해시 수 있지만, 다음 데이터베이스의 가독성이 손실됩니다). 나는 MySQL을 사용하고있다

답변

1

열을 읽을 수 없게 두지 않고 해시 인덱스를 만들 수 있습니다. 그것은 데이터가 아니라 해시 된 인덱스입니다. 범위를 검색하고 싶지 않으면 그 방법이 될 것 같습니다.

0

나는이 칼럼이 프라이 머리 키가 아닌 유일한 색인 된 필드가되고 싶다고 생각한다.

+0

이 방법을 사용하면 거의 조회로 사용하지 않을 것입니다 ... (내 가정이 맞다면) – Fosco

+0

미안하지만, 그것이 내 뜻입니다. 수정 : P – arnorhs

+0

이 수정됩니다.도움을 주셔서 감사합니다 – arnorhs

1

검색 문자열을 기본 키로 지정해야하는 이유는 무엇입니까?

나는 속도를 위해 숫자 기본 키를 사용하고 긴 문자열을 위해 별도의 고유 한 조회 필드를 사용합니다.

어쨌든 레코드를 삽입하기 전에 중복 체크를해야하며, 체크가 실패하면 대체 레코드를 찾으십시오. 얼마나 많은 mySQL의 UNIQUE 제약이 당신에게 도움이 될지 모르겠습니다.

+0

사고. 고정 – arnorhs

+0

+1 : 정확합니다. 또한 제목이 바뀌면 주석을 올바른 스레드로 참조하는 방법은 무엇입니까? –

0

2 개의 매개 변수를 사용하여 함수를 작성하는 것이 좋습니다. 하여 주석 유형에 대한 하나와 독특한 코멘트 itselfe에 대한 하나

insertCommentThread('images', '340'); 
insertCommentThread('wiki', 'entry-page-name-it-could-be-long'); 

이 같은 다음 설계 것이다 DB :

ID (int) - GROUP (varchar) - NAME (varchar) 
PriKey: ID 
Unique: (Group + Name) 

당신이 모듈에 대한 쿼리 (commenttype)를 제한 할 수 있습니다이 방법 현재로드되어 있고 다른 그룹 내에서 동일한 주석을 가질 수도 있습니다.

+0

많은 양의 데이터를 삽입했을 때 단 하나가 아닌 두 개의 별도의 varchar 키를 쿼리하는 것이 더 느리지 않습니까? – arnorhs

+0

두 varchar 키를 모두 사용하는 인덱스는 중요하지 않습니다. – JochenJung

관련 문제