Background Image

FORUM

조회 수 157 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Linux 64bit
CUBRID Ver.
CUBRID 10.2 (10.2.7.8896-cebe4e9) (64bit release build for Linux) (Jan 26 2022 11:35:52)
CUBRID TOOL Ver.
SQLGate
응용 환경(API)
 


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
SQL문 실행이 느립니다.

 

select use_start
                                 , use_end
                                 , IF(reserve_type = 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS user_runtime
                                 , IF(reserve_type != 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS staff_runtime
                                 , run_dist
                                 , IF(reserve_type = 2, 1, 0) AS user_uses
                                 , IF(reserve_type != 2, 1, 0) AS staff_uses
                                   , use_point
                                   , coupon_discount
                              from reserve a INNER join
                               (select distinct date_format(use_start, '%Y-%m-%d') as stat_date from reserve) b
                                 on ((use_start <  stat_date and use_end   >= adddate(stat_date, 1))
                           or (use_start >= stat_date and use_start <  adddate(stat_date, 1))
                           or (use_end   >= stat_date and use_end   <  adddate(stat_date, 1)));
                             where use_start >= '2021-08-24'  
                               and status in (1,2,3,4,5)

 

이 SQL 문은 구성하는 두개의 select문에 대해서 각각 실행한 응답은 빠릅니다.

 

1)

select use_start
                                 , use_end
                                 , IF(reserve_type = 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS user_runtime
                                 , IF(reserve_type != 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS staff_runtime
                                 , run_dist
                                 , IF(reserve_type = 2, 1, 0) AS user_uses
                                 , IF(reserve_type != 2, 1, 0) AS staff_uses
                                   , use_point
                                   , coupon_discount
                              from reserve a

2)

select distinct date_format(use_start, '%Y-%m-%d') as stat_date from reserve

 

1) 2)를 각각 실행한 응답속도는 매우 빠릅니다.

 

select distinct date_format(use_start, '%Y-%m-%d') as stat_date from reserve 를 실행시켜 레코드의 건수를 확인하면

 

148694 건입니다.

 

SQLGate에서 해당 테이블의 Create문을 가져와본 결과는 다음과 같습니다.

 

CREATE TABLE [DBA].[reserve] (
       [id] CHARACTER VARYING(32) NOT NULL,
       [product_name] CHARACTER VARYING(64) NOT NULL,
       [reserver_id] CHARACTER VARYING(40) NOT NULL,
       [reserver_name] CHARACTER VARYING(64) NOT NULL,
       [age] INTEGER NOT NULL,
       [sex] INTEGER NOT NULL,
       [status] CHARACTER VARYING(10) NOT NULL,
       [reserve_type] CHARACTER VARYING(10) NOT NULL,
       [trip_type] CHARACTER VARYING(20) NOT NULL,
       [car_number] CHARACTER VARYING(20) NOT NULL,
       [model] CHARACTER VARYING(40) NOT NULL,
       [owner] CHARACTER VARYING(40) NOT NULL,
       [origin_area] INTEGER NOT NULL,
       [origin_spot] CHARACTER VARYING(50) NOT NULL,
       [dest_area] INTEGER NOT NULL,
       [dest_spot] CHARACTER VARYING(50) NOT NULL,
       [reserve_start] DATETIME NOT NULL,
       [reserve_end]   DATETIME NOT NULL,
       [use_start]     DATETIME,
       [use_end]       DATETIME,
       [engine_off]    DATETIME,
       [run_dist]      INTEGER NOT NULL,
       [deposit]       BIGINT NOT NULL,
       [exclude]       BIGINT NOT NULL,
       [deposit_yn] CHARACTER(1) NOT NULL,
       [pickup_charge] BIGINT NOT NULL,
       [pickup_charge_yn] CHARACTER(1) NOT NULL,
       [pickup_excharge] BIGINT NOT NULL,
       [pickup_excharge_yn] CHARACTER(1) NOT NULL,
       [ride_charge] BIGINT NOT NULL,
       [ride_charge_yn] CHARACTER(1) NOT NULL,
       [etc_charge] BIGINT NOT NULL,
       [etc_charge_yn] CHARACTER(1) NOT NULL,
       [use_charge] BIGINT NOT NULL,
       [use_charge_yn] CHARACTER(1) NOT NULL,
       [use_point] BIGINT NOT NULL,
       [use_coupon] CHARACTER VARYING(64) NOT NULL,
       [coupon_discount] BIGINT NOT NULL,
       [pay_charge]      BIGINT NOT NULL,
       [pay_yn] CHARACTER(1) NOT NULL,
       CONSTRAINT [pk_reserve_id]
              PRIMARY KEY ([id]),
              INDEX [ref48] ([car_number]),
              INDEX [ix_reserve2] ([status], [reserve_type], [origin_area], [origin_spot], [dest_area], [dest_spot], [reserve_start], [reserve_end]),
              INDEX [ix_reserve3] ([use_start], [use_end]),
              INDEX [ix_reserve1] ([reserver_id], [reserver_name])
)
COLLATE utf8_bin

 

 

  • ?
    steve 2022.11.23 10:08
    잘못된 정보가 있어서 바로잡습니다.
    reserve table에 있는 record의 건수는 148694건이며
    select distinct date_format(use_start, '%Y-%m-%d') as stat_date from reserve 를 실행시켜 레코드의 건수를 확인한 결과는 470 건입니다.
  • ?
    steve 2022.11.23 12:03

    다른 방법으로 시도해 보아도 마찬가지 입니다. 실행시간 250초

     

    1. SQL

    select exclude, use_start
                                     , use_end
                                     , IF(reserve_type = 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS user_runtime
                                     , IF(reserve_type != 2, 1, 0) * (UNIX_TIMESTAMP(use_end) - UNIX_TIMESTAMP(use_start)) / 60 AS staff_runtime
                                     , run_dist
                                     , IF(reserve_type = 2, 1, 0) AS user_uses
                                     , IF(reserve_type != 2, 1, 0) AS staff_uses
                                       , use_point
                                       , coupon_discount
                                  from reserve a INNER join
                                   stat_dates b
                                   on (use_start <  stat_date and use_end   >= adddate(stat_date, 1)
                               or (use_start >= stat_date and use_start <  adddate(stat_date, 1))
                               or (use_end   >= stat_date and use_end   <  adddate(stat_date, 1)));

     

    2. record count

    SELECT COUNT(*) FROM reserve; -> 149278 건

    SELECT COUNT(*) FROM stat_dates; -> 457 건

     

    3. schema
    reserve table

    CREATE TABLE [DBA].[reserve] (
           [id] CHARACTER VARYING(32) NOT NULL,
           [product_name] CHARACTER VARYING(64) NOT NULL,
           [reserver_id] CHARACTER VARYING(40) NOT NULL,
           [reserver_name] CHARACTER VARYING(64) NOT NULL,
           [age] INTEGER NOT NULL,
           [sex] INTEGER NOT NULL,
           [status] CHARACTER VARYING(10) NOT NULL,
           [reserve_type] CHARACTER VARYING(10) NOT NULL,
           [trip_type] CHARACTER VARYING(20) NOT NULL,
           [car_number] CHARACTER VARYING(20) NOT NULL,
           [model] CHARACTER VARYING(40) NOT NULL,
           [owner] CHARACTER VARYING(40) NOT NULL,
           [origin_area] INTEGER NOT NULL,
           [origin_spot] CHARACTER VARYING(50) NOT NULL,
           [dest_area] INTEGER NOT NULL,
           [dest_spot] CHARACTER VARYING(50) NOT NULL,
           [reserve_start] DATETIME NOT NULL,
           [reserve_end]   DATETIME NOT NULL,
           [use_start]     DATETIME,
           [use_end]       DATETIME,
           [engine_off]    DATETIME,
           [run_dist]      INTEGER NOT NULL,
           [deposit]       BIGINT NOT NULL,
           [exclude]       BIGINT NOT NULL,
           [deposit_yn] CHARACTER(1) NOT NULL,
           [pickup_charge] BIGINT NOT NULL,
           [pickup_charge_yn] CHARACTER(1) NOT NULL,
           [pickup_excharge] BIGINT NOT NULL,
           [pickup_excharge_yn] CHARACTER(1) NOT NULL,
           [ride_charge] BIGINT NOT NULL,
           [ride_charge_yn] CHARACTER(1) NOT NULL,
           [etc_charge] BIGINT NOT NULL,
           [etc_charge_yn] CHARACTER(1) NOT NULL,
           [use_charge] BIGINT NOT NULL,
           [use_charge_yn] CHARACTER(1) NOT NULL,
           [use_point] BIGINT NOT NULL,
           [use_coupon] CHARACTER VARYING(64) NOT NULL,
           [coupon_discount]      BIGINT NOT NULL,
           [stay_point_rewards]   BIGINT DEFAULT 0 NOT NULL,
           [charge_point_rewards] BIGINT DEFAULT 0 NOT NULL,
           [pay_charge]           BIGINT NOT NULL,
           [pay_yn] CHARACTER(1) NOT NULL,
           CONSTRAINT [pk_reserve_id]
                  PRIMARY KEY ([id]),
                  INDEX [ref48] ([car_number]),
                  INDEX [ix_reserve2] ([status], [reserve_type], [origin_area], [origin_spot], [dest_area], [dest_spot], [reserve_start], [reserve_end]),
                  INDEX [ix_reserve3] ([use_start], [use_end]),
                  INDEX [ix_reserve1] ([reserver_id], [reserver_name])
    )
    COLLATE utf8_bin

    stat_dates table

    CREATE TABLE [DBA].[stat_dates] (
           [stat_date] CHARACTER(10) NOT NULL,
           CONSTRAINT [pk_stat_dates_stat_date]
                  PRIMARY KEY ([stat_date])
    )
    REUSE_OID,
    COLLATE utf8_bin


List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 48
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
674 CUBRID 10.1 64bit LINUX 다운이 안되네요 1 뿡뿌이다네 2017.11.09 153
673 텍스트 파일로 내보내기 관련 1 bchlim 2020.08.27 153
672 JSP JDBC 관련해서 문의드립니다. 1 수야돌고래 2021.11.25 153
671 브로커(CAS)수 질문드립니다! 8 요시니 2023.06.05 152
670 큐브리드 매니저에서 select문에 의해 검색된 결과를 전체내보내기.. 1 대청 2021.02.22 152
669 [ADO.NET] Syntax error: unexpected 6 tree1891 2023.10.17 152
668 큐브리드 timestamp 오류 문의 5 jjun7204 2023.04.12 152
667 큐브리드 DB 트랜잭션 정보 질문하겠습니다. 1 연습용 2021.10.29 152
666 설시치 문의 드립니다. 4 file 큐브리드궁금 2023.01.18 152
665 서브쿼리시 질문드립니다. 2 dev123123 2023.02.28 151
664 HA 구성시 AUTO_INCREMENT 컬럼 동기화 가능여부 1 Kim 2020.06.10 151
663 이러한 오류가 뜨는 이유가 뭔가요? 1 UK 2020.11.13 151
662 예약어 관련하여 문의드립니다. 1 jechoi 2019.07.23 151
661 Openssl 취약점 패치 문의 2 아스페리타스 2020.12.11 150
660 백업자동화 기능중에 옵션 문의 1 coolkkm 2017.10.23 150
659 큐브리드 DB링크 문의드립니다. 4 file 초코초코초 2022.12.01 150
658 브로커 포트관련 문의사항 1 a13579135790 2017.11.06 150
657 큐브리드 가져오기 질문입니다. 2 뚜벅초 2019.05.07 150
656 Cubrid manager가 Hang이 걸립니다. 2 file passik89 2020.08.12 149
655 파일에서 읽어 저장 2 현수 2020.04.09 148
Board Pagination Prev 1 ... 162 163 164 165 166 167 168 169 170 171 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales