* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
[운영환경]
* OS: Linux mitsoft 3.10.0-862.3.2.el7.x86_64 #1 SMP Mon May 21 23:36:36 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
* cubrid : CUBRID 10.1 (10.1.3.7765-265e708) (64bit release build for Linux) (Aug 22 2019 11:52:23)
* JDK : java version "1.8.0_231"
* CUBRID Manager: 10.1.0.0007 (64bit)
CUBRID Manager 에서 첨부된 SQL 호출시 아래처럼 에러 발생하여 문의 드립니다
조회시작하고 경과시간이 18초가 되면 오류납니다
cubrid.jdbc.driver.CUBRIDException: Cannot communicate with the broker or received invalid packet[CAS INFO-:0,0,0],[SESSION-0],[URL-null].
첨부화일에 조회SQL, 오류메세지, 프로시져 소스 첨부해드립니다
문의하신 첨부파일을 봤습니다.
첨부파일을 내용을 보니 여러 Row를 하나의 Row로 보여주는 질의문을 구성하려고 하는 것 같네요.
사용자 정의 함수를 사용하지 않고, 내장 함수(GROUP_CONCAT)를 사용하여 질의문을 작성하여 원하는 정보를 발췌하시면 됩니다.
두개의 테이블에 데이터가 어떻게 저장되어 있는지는 모르지만 대략적인 질의문을 알려 드립니다.
그리고 검색조건에 인덱스를 생성하여 성능을 향상시키면 좋을 것 같습니다
select
(select GROUP_CONCAT(CASE WHEN B.column_id >= 1 AND B.column_id <= 100 THEN B.column_id END SEPARATOR ',')
from AAA
where seq = A.seq
and data_no = A.data_no
and row_no = A.row_no) as err_cols,
A.seq,
A.data_no,
A.row_no AS row_id
A.VAL_001,
A.VAL_002,
A.VAL_003,
A.VAL_004,
A.VAL_005,
A.VAL_006,
A.VAL_007,
A.VAL_008,
A.VAL_009,
A.VAL_010,
A.VAL_011
FROM tbl_a A
WHERE A.seq = 100
ORDER BY A.row_no FOR ORDERBY_NUM() between 1 and 200
;
인덱스 생성
create index idx_1 on tbl_a(seq, row_no);
create index idx_2 on aaa(seq, data_no, row_no);