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


  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views118
    read more
  2. SQLGate for CUBRID 영구 무료 라이선스 제공

    Date2020.04.09 Byadmin Views4474
    read more
  3. cubrid11.2 embedded SQL 지원 여부 및 메뉴얼 위치?

    Date2022.12.15 Byjjune1206 Views46
    Read More
  4. Error : [-596] The 1953 pages of total temporary space allowed have been exceeded.

    Date2022.12.10 By리들러 Views275
    Read More
  5. 큐브리드 DB링크 문의드립니다.

    Date2022.12.01 By초코초코초 Views150
    Read More
  6. Oracle to CUBRID Migration 방안

    Date2022.12.01 ByDBS Views98
    Read More
  7. cubrid 엔진 설치 오류

    Date2022.12.01 Byminsung Views73
    Read More
  8. kill 명령어로 프로세스가 죽지 않을때

    Date2022.12.01 By나라디 Views158
    Read More
  9. 특정 컬럼 order by 시 한글 > 숫자 > 영문 순으로 정렬 방법?

    Date2022.12.01 ByQubrid Views454
    Read More
  10. 클라우드 환경에서 데이터베이스 추가 관련

    Date2022.11.29 By디콘플러스 Views68
    Read More
  11. csql로 sql파일 실행 시 변수 전달

    Date2022.11.29 By공도비 Views137
    Read More
  12. Cubrid 이용 관련 문의 - 데이터 손실

    Date2022.11.24 Byflash Views176
    Read More
  13. select 문의 응답속도가 느립니다.

    Date2022.11.22 Bysteve Views157
    Read More
  14. 큐브리드 검색 초건 총 개수 구하는 함수나 방법알고 싶어요.

    Date2022.11.22 By우유악마 Views253
    Read More
  15. create table 시 응답이 없습니다.

    Date2022.11.22 Bysteve Views105
    Read More
  16. 볼륨 확장 문의드립니다.

    Date2022.11.22 ByChes Views94
    Read More
  17. 오라클 패키지 마이그레이션

    Date2022.11.21 By은정 Views93
    Read More
  18. 오프라인 상태에서 큐브리드(11.2) 설치 시 필요 라이브러리 파일 관련 문의 드립니다

    Date2022.11.21 Bygidoree Views69
    Read More
  19. clob 마이그레이션 문의 사항

    Date2022.11.21 BysTricky Views106
    Read More
  20. cubrid migration toolkit / CLOB 인코딩 이슈 해결방안 문의 (해결)

    Date2022.11.18 By키롱 Views437
    Read More
  21. cubrid migration toolkit / Java heap space. Migration is interrupted (해결)

    Date2022.11.18 By키롱 Views49
    Read More
  22. CUBRID DB Link insert, update, delete

    Date2022.11.17 By리들러 Views133
    Read More
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 200 Next
/ 200

Contact Cubrid

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