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 119
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4475
700 데이터베이스 내보내기 할때, 컬럼설명 누락 관련 질문 1 유진욱 2020.07.24 158
699 CUBRID lob ces_temp 미삭제 2 zzangdol 2020.09.02 158
698 kill 명령어로 프로세스가 죽지 않을때 3 나라디 2022.12.01 158
697 cubrid migration toolkit / oracle → cubrid / CLOB 의 한글 깨짐 (해결) 3 키롱 2022.11.16 158
» select 문의 응답속도가 느립니다. 2 steve 2022.11.22 157
695 iso8601을 cast하려면 어떻게 해야되나요? 1 자등명법등명 2021.06.21 157
694 에러 내용 문의 2 yonggi 2021.09.01 157
693 php 7.3 버전에도 설치가 가능한가요 ? 1 kks8017 2019.07.31 156
692 재문의 JDBC 를 다운받아 9.3.6.0002 로 했는데도 안되서 문의드립니다.. 빠른답변부탁드립니다 2 augustlys 2019.04.16 156
691 큐브리드 매니저 관련 문의 드립니다. 1 file 팩트드림 2019.09.10 156
690 트랜잭션 격리 수준 관련한 에러 메시지 6 file gjgj 2021.07.15 156
689 cubrid 버전별 EOS 문의 1 큐브라떼 2020.11.10 156
688 궁금한게 있습니다! 1 김진리 2017.08.25 156
687 특수문자 포함 LIKE검색 1 SEO 2023.03.06 156
686 큐브리드 DB 트랜잭션 정보 질문하겠습니다. 1 연습용 2021.10.29 155
685 CentOs php 연동 문의 2 spjoshuakim 2021.01.28 154
684 oracle_style_empty_string=yes 설정 문의 5 cubrid초보 2021.06.29 154
683 큐브리드 설치 도중 취소한 후, 재설치가 불가능합니다. 5 복괴 2023.03.28 154
682 mac os m1 실행시 무응답 실행안됩니다. 6 시나몬빵 2023.04.04 154
681 cmd명령어 cubrid broker status 치면 창이 잠깐 떳다가 꺼집니다. 2 겸둥이k 2021.08.24 154
Board Pagination Prev 1 ... 161 162 163 164 165 166 167 168 169 170 ... 200 Next
/ 200

Contact Cubrid

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