mssql table 에 primary key 를 자동증가값으로 해놨을때
select 는 insert 순서대로 select 되는 것이 보장되던데,
검색해보니 oralce 에선 order by 나 IOT 를 사용하는 방법이 최선인듯합니다.(맞나요?)
인덱스가 여럿있어야 하는 테이블이라 IOT 는 어려울 것 같고
천상 order by 를 써야 하겠는데 작은? 문제가 있네요..
테이블 만들고, 테스트 데이터 넣었습니다.
create table TestTable (
id number primary key not null,
data nvarchar2(100) null
)
go
INSERT INTO TestTable
SELECT LEVEL cnt, DBMS_RANDOM.value() FROM DUAL CONNECT BY LEVEL < 10000
go
이제 조회를 위한 쿼리입니다.
SELECT * FROM TestTable
이렇게 쿼리 하면 id 순서대로 안나오니까 이렇게 해야겠죠.
SELECT * FROM TestTable ORDER BY id
근데 문제는 order by 로 인한 cpu 비용이 엄청나게 상승하는데 있습니다.(첨부이미지)
성능 손실 없이 삽입 순서를 유지하는 방법이 없을까요?
* 추가 *
현님 코멘트 대로 힌트를 이용해 PK 인덱스를 태워본 결과스샷을 더합니다.
성능이 많이 좋아졌습니다만 그래도 성능 손실이 제법 있네요. 다른 방법은 없을까요?