[DB] 복잡한 쿼리 처리를 위한 MySQL Procedure 이야기

작성자
dra****
작성일
2024-04-09 12:58
조회
287

데이터베이스 서버에서 데이를 가져올 때 엑셀에서는 한번에 한번의 쿼리(Query)만 처리할 수 있습니다.
처리 과정은 아래와 같습니다. ODBC를 통해 연결 설정을 해 놓으면 쉽습니다.

1. 서버에 연결
2. 서버에 Query 전송
3. 결과 받고 서버와의 연결 종료

VBA로 DB를 처리 할 때 한번의 쿼리를 해결할 때는 아무런 문제가 없습니다.

제 고민의 시작은 인터넷 환경이 열악한 곳에서
어떤 결과 값을 받아 내기 위해서, 여러번 쿼리를 보내서 결과를 받아 쿼리를 다시 생성해서 보내고,
받고 보내고를 반복하다 보니 최종 결과물을 받아내는데 시간이 많이 걸리는 것이었습니다.

가령, 관계형 데이터 베이스,
ID로 특정 필드의 값을 조회하고, 그 필드의 값으로 어떠한 결과를 찾아서,
출력 데이터를 가공해서 최종 결과물을 얻어 내는 것이었습니다.

또는, 새로은 레코드를 삽입해서 생성된 ID값을 반환 받아, 그 레코드를 로그 기록 테이블에 추가한다던가,
특정 값을 가진 여러개의 테이블에 동시에 업데이트 한다던가 할 때,
여러 번의 쿼리를 날려서 처리하는 것은 매우 비 효율적입니다.

이럴 때 매우 유용한 기능이 MySQL에 있는 Stored Procedure, Stored Function입니다.

이 안에 여러개의 처리 과정을 구현하고, 최종 결과 값을 받게 하면,
한번이 쿼리로 해결이 됩니다.
이러한 기능이 미이 있는 걸로 봐서는
이전의 수많은 프로그래머들이 저와 같은 고민을 이미 했었다는 의미겠지요.

아래는 제가 사용하는 간단한 프로시저 예입니다.
저와 같은 고민이 있으신 분들은 Stored Procedure 공부를 한번 해보셔요.
복잡한 쿼리 처리해는데는 정말 유용합니다.

 

신고
스크랩
공유
회원등급 : 30레벨
포인트 : 4700 EP
전체 4

  • 2024-04-10 18:16

    @dra**** 님 MySQL 자체에서도 함수를 구현할 수 있다는걸 처음 알았습니다


    • 2024-04-10 22:56

      @더블유에이 님 mysql 안에 저장해 놓고 불러 쓰는 함수인데, 매우 유용합니다. 과거의 고민 들 싹 사라 졌습니다.

       


      • 2024-06-13 16:56

        @dra**** 님 DB연결 시, connectionString에 OPTION=67108864를 추가하면 쿼리문 여러 개 활용이 가능합니다.

        https://stackoverflow.com/questions/4144961/multiple-insert-statements-in-single-odbc-executenonquery-c

        https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html


        • 2024-06-13 17:36

          @lunashiel 님 뭐리 결과값을 받아 다시 쿼리로 처리하는데는 프로시져를 쓸 수 밖에 없지만,

          지금 올려주신 커넥션스트링은 단순 여러개의 쿼리를 처리할 때 매우 유용할 듯 합니다.

          이거를 그리도 찾았다가 여러번 실패 했는데, 다음번 프로젝트 코딩때 유용하게 사용하겠습니다.

          감사합니다. ^^


전체 125
번호 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (290)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 844376
오빠두엑셀 2022.02.03 554 844376
74491
New 이름관리 엑셀 업그레이드 버전 입니다. 첨부파일 (2)
박정호 | 2024.10.28 | 추천 0 | 조회 45
박정호 2024.10.28 - 45
74354
월드컵 랭킹 계산(ELO 점수 계산) 첨부파일 (4)
박정호 | 2024.10.22 | 추천 0 | 조회 54
박정호 2024.10.22 - 54
74269
엑셀2021이하에서 CHOOSECOLS, CHOOSEROWS 처럼 동작시키기 첨부파일 (13)
마법의손 | 2024.10.18 | 추천 2 | 조회 107
마법의손 2024.10.18 2 107
74204
이름관리 엑셀입니다.(모듈) 첨부파일 (6)
박정호 | 2024.10.15 | 추천 0 | 조회 136
박정호 2024.10.15 - 136
74028
로또번호2(반자동 기능 업데이트) 첨부파일 (4)
박정호 | 2024.10.05 | 추천 1 | 조회 130
박정호 2024.10.05 1 130
74012
매장 근태관리시트 공유 첨부파일 (3)
체리로그 | 2024.10.03 | 추천 1 | 조회 125
체리로그 2024.10.03 1 125
73964
[파워쿼리] 여러열 열분할하기 첨부파일 (4)
마법의손 | 2024.10.01 | 추천 1 | 조회 103
마법의손 2024.10.01 1 103
73915
M365 GroupBy, PivotBy 함수 공식 배포 (6)
원조백수 | 2024.09.27 | 추천 2 | 조회 139
원조백수 2024.09.27 2 139
73485
m365 신규함수(베타) : TRIMRANGE (7)
더블유에이 | 2024.09.04 | 추천 1 | 조회 209
더블유에이 2024.09.04 1 209
73454
고등학교 선택과목 편성 방법 (4)
toug**** | 2024.09.03 | 추천 0 | 조회 122
toug**** 2024.09.03 - 122
73241
로또 번호 엑셀입니다. 첨부파일 (9)
박정호 | 2024.08.24 | 추천 1 | 조회 278
박정호 2024.08.24 1 278
73096
그룹별 데이터 나누기 [가로정렬] 첨부파일 (7)
마법의손 | 2024.08.20 | 추천 2 | 조회 200
마법의손 2024.08.20 2 200
73093
ppt에 둥근 표 삽입하기 (4)
강민준🤗 | 2024.08.20 | 추천 1 | 조회 175
강민준🤗 2024.08.20 1 175
73029
XLOOKUP, XMATCH 함수에 새로운 Match_mode로 RegEx 추가 (2)
원조백수 | 2024.08.16 | 추천 3 | 조회 208
원조백수 2024.08.16 3 208
72413
아웃룩에 개빡쳐서 만든 ThunderBird로 수신자 별 대량 메일 발송 VBA 매크로 공유합니다.(업무자동화) 첨부파일 (4)
알파고 | 2024.07.22 | 추천 1 | 조회 495
알파고 2024.07.22 1 495
72045
조합짜주는 엑셀(20명까지) 출력은 1만항까지 첨부파일 (13)
박정호 | 2024.07.10 | 추천 1 | 조회 367
박정호 2024.07.10 1 367
71965
서양달력 업데이트 입니다. 첨부파일 (14)
박정호 | 2024.07.07 | 추천 0 | 조회 223
박정호 2024.07.07 - 223
71902
Excel에서 ImportRange, ImportHTML 함수 사용하기 (4)
원조백수 | 2024.07.05 | 추천 0 | 조회 167
원조백수 2024.07.05 - 167
71838
Microsoft 365 신규 번역 함수 (8)
원조백수 | 2024.07.02 | 추천 2 | 조회 385
원조백수 2024.07.02 2 385
71804
음력->양력->서양달력 변환 첨부파일 (2)
박정호 | 2024.07.01 | 추천 0 | 조회 231
박정호 2024.07.01 - 231