Btree 방식의 인덱싱에서 어디를 시작으로 할 때, 늦은가, 빠른가에
관계되겠지요.
일반적으로 특별이 따로 지정하지 않으면, PostgreSQL놈은 btree로 인뎅싱 파일을 만드니.
PostgreSQL 놈이나 다른 RDBMS 놈을 깊게 공부해 보고 싶으시면,
Btree 놈의 자료 구조 정도는 공부해 두시는게 좋을 것같습니다.
인덱싱에서는 꼭 안 빠지고 나오는 놈이니까요.
한 백만건 정도의 자료에 대한 인덱싱이라면,
당연히 1번부터 출발 하는 것보다,
9천9백9십번 자료부터 출발하는 것이 당연히 늦겠지요.
이것은 Btree의 첫번째 key값을 찾는데 걸리는 시간일겝니다.
이 부분 때문에, oracle에서는 오름차순으로 인덱싱파일을 만들것인지, 내림차순으로 인덱싱파일을 만들것인지를 정할 수 있도록 하고 있습니다.
개인적인 생각으로 바람직한 방법인것 같고, 조만간에 PostgreSQL 놈에도 적용이 되리라고 봅니다. (벌써 적용되었는지도 모르겠지요. 요즘 개발버전을 안살펴봐서...)
SQL 표준 규약 안에는 양의 정수형 같은 것은 없습니다.
즉, integer 형인데, 이 필드에 대한 제약조건(Constraint)으로 그 값의 제약조건을 지정합니다.
자세한 것은 create table 명령에 관계된 PostgreSQL 매뉴얼을 참조하십시오.
-- 소타 님이 쓰신 글:
>> 안녕하세요 ^^;;
>> 간만에 질문 올립니다 :)
>>
>> 아.. php스쿨을 돌아다니다 보면요. 정렬시 속도가 어떤쪽이 빠른가에 대해 항상 얘기가 나오곤 합니다. 주로 mysql을 이용할때의 얘기인데. ORDER BY column 은 대부분 ORDER BY column DESC 보다 훨씬 빠르다! 라는게 정석처럼 펴져 있더군요. 하지만 저는 아직까지 아주 특수한 경우 말고는 이런 형상을 직접 경험한적은 없습니다. 물론 테스트를 위해 데이터를 무조건 집어넣고는 해봤을때는 맞았지만요.
>>
>> 그런데, 이룰이 Postgres에도 적용되는지 궁금합니다. 사실 지금 만들고 있는거에 위의 속도문제 해결책(?)을 적용시켰었는데요. sequence를 최고값을 시작값, 증가값을 -1 로 해놓고 사용하게 했습니다. 제일 큰수가 먼저 들어가고 점점 작은숫자가 들어가겠죠.
>> 이렇게 하면 ORDER BY column 만 써도 되는거잖아요?
>> 이렇게 했을때와 그냥 1부터 시작해서 증가값이 +1 인 sequence의 정수값이 들어가는 컬럼의 정렬은 무조건 DESC보다 빠른건가요?
>>
>> 답변 부탁드립니다 ^^;;;
>> 아참 이건 간단한 건데 data type에서 mysql에는 int 나 smallint 뒤에 음수값이 없는 unsigned 를 써줌으로써 표현한계를 조절할수 있었는데요. Postgres에서는 어떤걸로 이것을 대체하는지도 궁금합니다 ^^;;
>> 찾아볼때마다 못찾은거 같아서요. 혹시 없는건지~
>>
>> 그럼 좋은 하루 되세요 :)
|