2009-09-20 4 views
0

실적별로 그룹을 최적화하려면 문자열을 정수로 변환해야합니다.문자열 최적화로 그룹화

여러분은이 아이디어에 대해 어떻게 생각합니까?

해당되는 경우 PHP에서 문자열을 고유 한 정수로 변환하는 내장 함수가 있습니까?

+1

당신은 CRC32를 사용할 수 있습니다() 함수를 사용하여 문자열의 고유 한 정수를 만듭니다. 또는 md5를 사용하여 16 진수를 다시 base-10으로 변환하십시오. – mauris

+0

데이터가 정수일 경우 왜 처음에는 문자열 열에 저장합니까? 성과 비용이나 이익을 측정 했습니까? –

+0

@Mauris : CRC-32는 각 문자열에 고유 한 정수를 생성 할 수있는 합리적인 확률 만 제공합니다. 이는 결코 100 % 결정적이지 않습니다. 아주 작은 샘플이 충돌로 이어질 수 있습니다 - 서로 다른 문자열이 동일한 CRC-32 값으로 해싱됩니다. 더 큰 해시 - MD5 (32 비트 대신 128 비트) 또는 SHA-1 (160 비트) 또는 SHA-256 (오류, 256 비트라고 생각하십니까) - 고유 할 가능성이 높지만 전환 비용은 상당히 높습니다. –

답변

4

해당 열의 모든 데이터를 INT의 경우, 그것은 INT해야 ...

당신이 얻는 가장 큰 장점은 2 개의 int 사이의 비교는 4 바이트를 비교해야한다는 것입니다. 같은 번호를 나타내는 문자열은 (일반적으로) 길어집니다. 따라서 당신은 그것에서 약간 성과를 얻을 수 있어야합니다. 그러나 주된 이유는 int를 저장하는 컬럼이 int 여야한다는 것입니다.

최적화하여 그룹 GROUP BY 절을 가속화 할 카테고리 "조기 최적화"... 그리고 중요한 것은에 빠질 것이다는 데이터 유형이 아니라 필드에서 인덱스