현재 재가 검색할려는
CREATE TABLE tb_item
(
server_id smallint,
account_id character varying(20),
char_name character varying(20),
action_id smallint,
item_id integer,
item_serial bigint,
money integer,
item_cnt integer,
where_root character varying(20),
ndate bigint,
havemoney bigint,
upgradelevel smallint,
upgradeability integer,
enchantability character varying(255)
)
이런 테이블의
Table의 Row수는 : 173171000 수입니다.
테이블 컬럼의 인덱스는
ndate에 클러스트 인덱스를
char_name에 인덱스를 걸어놓았습니다.
그런다음
select ahourdate from (select * from tb_item where ndate > 20081229010000 and ndate < 20081290200000) as ahourdate where ahourdate.char_name = '___' limit 30;
이런 쿼리를 날리는대 상당히 오랜 시간이 걸립니다.
게다가 이것이 로그 테이블이라서 실시간적으로 쌓이는 데이터 량도 상당히 많고 저런 조건 쿼리를 날려서 확인을 해야되는 상황입니다.
게다가
select count(*)를 할시에 위에있는 쿼리보다 오랜 시간이 걸리더군요.
이렇게 검색속도 향상을 위해서 어떻게 해야 될까요 ;
|