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 133
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4476
3783 CUBRID 2008 R3.0, R3.1 beta 에서의 PHP 모듈사용에 대한 질문 1 potter 2010.12.23 7159
3782 CUBRID 2008 R3.1 Patch 2 윈도우 버전은 없나요? 1 김우람 2011.05.13 8179
3781 CUBRID 2008 R3.1 odbc드라이버 관련 질문 1 메렁메렁 2014.08.25 7329
3780 CUBRID 2008 R4.0 Beta HA 관련 질문입니다. 6 file 반짝이 2011.05.16 25848
3779 CUBRID 2008 R4.3과 PHP 연동 문제 5 sinorix 2013.03.05 24685
3778 CUBRID 2008 r1.1 프로그램 삭제 불가 5 file 지누콩 2009.03.23 11825
3777 CUBRID 2008 데이터베이스 사용자 권한상속 에러. 6 윤희서 2009.01.17 25834
3776 CUBRID 4.0 64bit & SULinux 2.0 64Bit service start 시 manager fail 발생합니다.. 2 반짝이 2011.07.02 10058
3775 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 62131
3774 CUBRID 7.3 + zeroboard XE 관리자 로그인 에러 1 윤희서 2009.01.17 83643
3773 CUBRID 8.4.4 -> 11.0.3 로 업그레이드 시 발생할 문제가 있을까요? 1 SDDC사업개발자 2023.06.29 90
3772 CUBRID 9.1에서 CUBRID_CHARSET 변경 후 DB를 생성시 매니저에서 Lockdb operation has... 에러 발생 5 file nimbus89 2013.05.24 10228
3771 CUBRID 9.2 다국어 설치 관련 문의 드립니다. 7 secret 질의응답요청 2015.06.18 18
3770 CUBRID 9.2.0.0.155 한글 깨짐 관련 요청 2 뿡뿡이입니다 2014.02.06 11268
3769 CUBRID ADO.NET Data Provider 참조시 cascci.dll 로드 문제 1 yangsik 2017.10.06 416
3768 CUBRID Admin 접속 오류 4 정덕 2020.06.12 3961
3767 CUBRID CCI Library 를 이용한 CUBRID PHP Extension 설치하기 문의입니다. 2 책보는남자 2010.11.29 8561
3766 CUBRID DB 32bit에서 64bit 변경 방법 1 동훈이 2016.09.07 11143
3765 CUBRID DB Link insert, update, delete 1 리들러 2022.11.17 133
3764 CUBRID DB 날짜 및 시간 변환 하는 방법 알려주시면 감사하겠습니다. 1 루이지 2019.02.28 1247
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 201 Next
/ 201

Contact Cubrid

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