문제

레코드에 태그를 저장하는 가장 좋은 방법은 무엇입니까? 바르 차르 필드 만 사용 하시겠습니까? Tag X가 포함 된 행을 선택할 때 어떻습니까? 같은 연산자를 사용 하시겠습니까?

감사해요!

도움이 되었습니까?

해결책

두 가지에 따라 다릅니다.
1) 태그/태그 레코드의 양
2) 정규화에 대한 종교적 의견이 있는지 여부 :-)

매우 많은 양의 데이터를 다루지 않는 한, '태그'테이블 매핑 varchar 값을 정수 식별자에 매핑 한 다음 두 번째 테이블 매핑 태그 레코드를 태그 ID에 표시하는 것이 좋습니다. 먼저 이것을 구현하는 것이 좋습니다. 그런 다음 성능 요구를 충족하지 않는지 확인하십시오. 이 경우 태그가 지정된 행에 대한 ID와 태그의 실제 텍스트가있는 단일 테이블을 유지하지만이에서는 최적화가 전체 테이블 스캔을 수행하면 쿼리를 죽일 수 있으므로 숯 열을 사용하는 것이 좋습니다. 바르 차르 컬럼이있는 큰 테이블.

다른 팁

당신만을위한 몇 가지 아이디어와 테스트 : http://tagging.pui.ch/post/37027746608/tagsystems-performance-tests

아니요, 일반적으로 여러 데이터를 단일 필드에 넣는 것은 나쁜 생각입니다. 대신, 별도의 태그 테이블 (아마도 Tagid와 Tagname 만 사용)을 사용한 다음 각 레코드에 대해 이와 관련된 Tagid를 표시하십시오. 레코드가 여러 태그와 연관되어 있으면 Tagid 인 유일한 차이가있는 복제 레코드가 있습니다.

여기서 장점은 태그로 레코드별로 쉽게 쿼리하고 태그 테이블을 별도로 유지할 수 있다는 것입니다 (예 : 태그 이름이 변경되면 어떻게됩니까?).

가장 작은 허용 기본 키가있는 태그 테이블을 사용하십시오. 255 개 미만의 태그가있는 경우 바이트 (tinyint) 또는 다른 단어 (smallint)를 사용하십시오. 키가 작을수록 메인 테이블의 외래 키의 색인이 작고 빠릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top