2011-10-08 4 views
1

는 최근에 나는 MySQL의 성능 및 모범 사례에 대해 연구했습니다, 그리고 최근에 나는 ENUM 필드가 더 나은 성능을 가지고 있음을 발견 : 나는 궁금하네요 그러나 그것으로 ENUM 필드를 설정하는 것이 좋습니다 인 경우, http://www.mysqlperformanceblog.com/2008/01/24/enum-fields-vs-varchar-vs-int-joined-table-what-is-faster/MySQL ENUM 필드에서 심볼을 사용하는 것이 좋습니다.

을 기호를 사용하여 "긍정적", "부정", "중립"ENUM 필드를 가지고 있으며 데이터를 추상화하고 ENUM ('+', '-', '=') 이 테이블의 일부 공간. 이 필드는 명령문, 그룹 별 등의 조인 (join) 대상이됩니다.

이 방법이 좋은 방법입니까? 나는 이것이 나중에가는 길이 아니라는 것을 나중에 알기를 원하지 않는다.

답변

3

절대 속도가 0이됩니다.
ENUM은 텍스트로 저장되지 않고 정수로 저장되기 때문에 빠릅니다. MySQL은 자신의 정수 표현으로 값을 변환하는 쿼리가 실행됩니다

"Positive" => 1 
"Negative" => 2 
"Neutral" => 3 

하기 전에 다음과 같이

내부적으로 열거이 저장됩니다. 대신 테스트 afield of type string = "Positive"

MySQL은 당신은 어떠한 공간을 절약하지 않습니다
afield of type tinyint = 1

결론을 다할 것입니다.
속도가 전혀 들지 않습니다.

나는 그것에 대한 조언을 원할 것이다.

+0

스페이스/성능 주제를 제외하고 나는 개인적으로 MySQL의 예약어 또는 심볼에 대해 들어 본 적이 없으며 쿼리에 심볼을 사용하는 데 제한이 있습니까? (내가 사용하고있는 것들을 제외하고) –

+0

@ user550178,'''및 \ 및'%'와'_'와 같은 기호는 특별한 처리가 필요하지만, \\ 기호를 사용하여 쉽게 이스케이프됩니다. – Johan

-1

내가 왜 나쁜 접근법이 될지 모르겠다. 스피드만큼 많이 얻을 수는 없을지 모르지만 상징은 그 의미를 정확하게 표현하므로 나쁜 생각이라고 생각하지 않습니다.

관련 문제