2011-11-26 10 views
5

여러 열에서 고유 인덱스를 사용하여 데이터베이스 (Oracle)를 쿼리 할 경우 열 중 하나를 VARCHAR2에서 NUMBER로 변경하면 성능 차이가 발생합니까?
경우는 입니까?VARCHAR2에서 NUMBER 사이의 성능 차이

는 (그것의 VARCHAR2 나는 처음에 '0'이 필요하기 때문에하지만 난 내 응용 프로그램에서 프레 젠 테이션 계층에서 변경할 수 있습니다)

+0

'중요'를 정의해야합니다. NUMBERS가 더 빠를 것입니다. – Randy

+0

VARCHAR2와 NUMBER의 차이는 그리 중요하지 않습니다 (마찬가지로 저장됩니다). 다중 열 고유 색인에있는 열의 ORDER가 중요 할 수 있습니다. – ibre5041

답변

3

오라클에서 number와 varchar2의 성능 차이는 내부적으로 매우 유사한 표현을 가지고 있기 때문에 데이터에 전적으로 달려 있다고 말해줍니다.

https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:2669498700346402356

뿐만 아니라의 "내부 숫자 형식"섹션을 확인합니다 : 예를 들어, VARCHAR 데이터가 실제로 하나의 문자였다 경우

http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm#CNCPT012

(예를 다음을 참조하십시오 'Y', 'N')로하면 숫자보다는 varchars에서 더 나을 수 있습니다. 만약 당신이 100 개 미만의 코드를 가지고 있지만 문자열 등가물이 8 자라면, 아마도 varchars보다 숫자로 더 나을 것입니다.

+0

파티에 늦어서 고맙습니다. Tom과의 연결은 가치가있었습니다. :) – gdoron

4

네,이 번호를 사용하는 것이 더 빨리해야한다. 중요한지 여부를 증가하면 데이터, 색인 및 쿼리에 따라 달라집니다. 성능상의 문제가있는 경우, 이것은 마술 수정이 될 것 같지 않습니다.

+0

얼마나 많은 영향력이 있을지 알기위한 척도가 있습니까? 퍼센트로 말하자. 성능 문제는 없지만 언젠가는 가지고 싶지는 않습니다. – gdoron

+0

그리고 그 열이 고유 색인이 아니며 그 사람이 필터링하지 않을 경우에만 그 값을 얻습니다. 여전히 성능이 저하됩니까? – gdoron

+5

@gdoron 숫자 나 텍스트를 텍스트로 저장하는 것이 좋습니다. NUMBER 유형을 사용하면 공간과 성능면에서보다 효율적이어야하며 몇 가지 잠재적 문제 (예 : 실수로 해당 열에 번호가 아닌 것을 저장하려고 시도하는 경우 조기 경고)를 처리 할 수 ​​있습니다. 적은 양의 데이터 만 가지고 있다면이 변화를 통해 성능의 차이를 눈치 채지 못할 것입니다.하지만 비용이 적게 들고 테스트를한다면 아마도 올바른 일일 것입니다. –