database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27082 게시물 읽기
No. 27082
date column을 between으로 가져올 때 속도개선 문제...
작성자
안명규(ratsbomb)
작성일
2007-10-15 19:47
조회수
3,382

mysql> SELECT sum(int_field) FROM testdb WHERE dt_receipt BETWEEN '2007-09-12' AND '2007-10-12';

+----------------+

| sum(int_field) |

+----------------+

|       11484757 |

+----------------+

1 row in set (0.32 sec)

 

mysql> explain SELECT sum(int_field) FROM testdb WHERE dt_receipt BETWEEN '2007-09-12' AND '2007-10-12';

+----+-------------+-------------+-------+----------------+-----------------+---------+------+--------+--------------------------+

| id | select_type | table       | type  | possible_keys  | key             | key_len | ref  | rows   | Extra                    |

+----+-------------+-------------+-------+----------------+-----------------+---------+------+--------+--------------------------+

|  1 | SIMPLE      | testdb      | index | IDX_DTR_CD_IDA | IDX_CDA_DTR_AMT | 12      | NULL | 148036 | Using where; Using index |

+----+-------------+-------------+-------+----------------+-----------------+---------+------+--------+--------------------------+

1 row in set (0.00 sec)


위의 sum()함수를 사용하는 쿼리가 0.32sec나 소요됩니다. 이 보다 더 빠르게 할 순 없을까요?

dt_receipt는 date형입니다.

index를 타는데도, rows에 148036나 되어서 그런 것 같습니다.

이 글에 대한 댓글이 총 2건 있습니다.

네, 말씀하신대로 실행계획 상으로는 인덱스를 이용하기 때문에 문제가 없습니다.

더 빠른 속도를 원하신다면 미리 집계하여 어플리케이션 레벨에서 query rewriting을 구현하는 방식이 있씁니다.


일반적은 DSS나 다차원 쿼리에서 aggregation 테이블을 만들어서 집계 범위를 줄이는 방식으로 속도를 향상시키기도하지요.


배치작업으로 미리 일정범위를 집계하여 저장해 놓고 이용하는 방법입니다. 한달, 일주, 하루 등등의 범위에 있는 집계 대상을 미리 계산해서 전체를 읽지 않고 필요한 하나의 로우만 선택하도록 구현을 고민해 보시기바랍니다.

김영우님이 2007-10-16 14:48에 작성한 댓글입니다. Edit

답변 감사합니다. 아무래도 그런 방법밖에 없을 것 같습니다.

최초 테이블 설계시에 date field를 좀 더 고려했으면 좋았을 것 같다는 생각도 듭니다.

:-) 그럼, 즐거운 하루 되세요.

안명규(ratsbomb)님이 2007-10-17 18:45에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27086astar100(?) 이런 툴(?) 아세요?
김순조
2007-10-17
2052
27085MySQL 데이터 양과 속도에 대해서 문의 드립니다. [3]
김대홍
2007-10-17
2465
27083ms-sql -> my-sql 로 어떻게 하나요 ㅜㅜ [1]
몰라몰라
2007-10-16
2345
27082date column을 between으로 가져올 때 속도개선 문제... [2]
안명규
2007-10-15
3382
27080ASC 정렬과 DESC 정렬의 속도 차이 [2]
브라운
2007-10-10
4482
27079이런경우에 DB 나 테이블 복구가능하나요? 부탁드립니다.. ㅠㅠ
박정환
2007-10-09
2405
27078같은 형태의 열을 출력할 때
아이구
2007-10-09
2090
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다