안녕하세요. 강의 잘 보고 있습니다! [실습] WHERE문이 사용된 SQL문 튜닝하기 - 2 해당 강의에서 질문이 있습니다 :) 이전 강의에서 멀티 컬럼 인덱스의 경우, 첫번째 컬럼 기준으로 먼저 정렬하고, 그 다음 두번째 컬럼 기준으로 정렬한다고 배웠던 것 같습니다! 따라서 idx_created_at <-> idx_created_at_department 실행계획 idx_department <-> idx_department_created_at 실행계획이 각각 비슷할 것이라고 예상했는데, 강의에서는 idx_created_at과 두 개의 멀티 컬럼 인덱스 idx_created_at_department, idx_department_created_at 가 비슷하다는 것을 알 수 있었습니다! 이유가 궁금하여 질문 남겨봅니다 !
강사님 안녕하세요! 강의 잘 듣고 있습니다. 너무 좋네요! 😊 [실습] 인덱스 직접 설정해보기/성능 측정해보기 => 실습 중 질문이 있습니다! user.age에 인덱스 생성 전 [2026-07-12 11:51:16] 1,028 rows retrieved starting from 1 in 420 ms (execution: 110 ms, fetching: 310 ms) => 이런식으로 평균 400ms 속도가 측정되다가 user.age에 인덱스 생성 후 [2026-07-12 12:19:48] 1,028 rows retrieved starting from 1 in 510 ms (execution: 11 ms, fetching: 499 ms) [2026-07-12 12:19:59] 1,028 rows retrieved starting from 1 in 339 ms (execution: 9 ms, fetching: 330 ms) [2026-07-12 12:20:09] 1,028 rows retrieved starting from 1 in 329 ms (execution: 7 ms, fetching: 322 ms) 인덱스 생성 후 최초 실행시에 510ms로 시간이 한번 튀는데 검색해 봤을때는 인덱스 생성 직후 캐싱 되어있지 않아서 발생하는 현상이라고 하는데 이러한 것은 신경쓰지 않아도 되는지 궁금합니다! 감사합니다!
학습 관련 질문을 남겨주세요. 구체적으로 적을수록 좋아요! 실습중에 궁금한점이 있으시면 erdcloud 링크를 첨부해주세요! 데이터 모델링 설명중에 나오는 '용어'들은 강의나 책마다 조금씩 다를 수 있습니다. https://drive.google.com/file/d/1ImDk6PSaolScBZnvEw_Y_Y8Kzxh7wvZd/view?usp=sharing 질문 내용 안녕하세요, 강사님. DAP 시험을 준비하며 강의를 수강하고 있는 수강생입니다. 관계 도출 부분에서 막히는 지점이 있어 질문드립니다. '물류운송시스템' 문제의 화물운송스케줄 엔터티 관련 질문입니다. 화물운송과 운송수단스케줄이 M:M 관계라고 판단하여, 식별자를 운송번호 + 운송스케줄번호 + 운송순번 으로 도출했습니다. 그런데 답안에서는 운송출발순번 과 도착운송순번 두 개의 속성이 식별자에 포함되어 있었습니다. 하나의 화물이 특정 스케줄 내에서 출발 경유지와 도착 경유지를 함께 가져야 한다는 점 때문에 순번이 두 개로 나뉜 것인지 궁금합니다. 이런 경우를 어떤 기준으로 판단해서 식별자를 도출해야 하는지 설명 부탁드립니다. 감사합니다.
--Weekly Retention WITH base AS( SELECT user_pseudo_id, event_name, DATE(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_date, DATE_TRUNC(DATE(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul'), WEEK(MONDAY)) AS event_week, FROM advanced.app_logs WHERE event_date BETWEEN '2022-08-01' AND '2022-11-03' ), first_week_data AS( #first_week 추출 SELECT DISTINCT user_pseudo_id, event_week, MIN(event_week) OVER(PARTITION BY user_pseudo_id) AS first_week, FROM base ), week_diff_user_cnt_data AS( #week_diff 및 user_cnt 추출 SELECT week_diff, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM( SELECT *, DATE_DIFF(event_week, first_week, WEEK(MONDAY)) AS week_diff FROM first_week_data ) GROUP BY week_diff ) #first_week_user_cnt 및 retention_ratio 추출 SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_week_user_cnt), 3) AS retention_rate FROM( SELECT *, FIRST_VALUE(user_cnt) OVER(ORDER BY week_diff) AS first_week_user_cnt FROM week_diff_user_cnt_data ) ORDER BY week_diff --Monthly Retention WITH base AS( SELECT user_pseudo_id, event_name, DATE(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul') AS event_date, DATE_TRUNC(DATE(TIMESTAMP_MICROS(event_timestamp), 'Asia/Seoul'), MONTH) AS event_month, FROM advanced.app_logs WHERE event_date BETWEEN '2022-08-01' AND '2022-11-03' ), first_month_data AS( #first_month 추출 SELECT DISTINCT user_pseudo_id, event_month, MIN(event_month) OVER(PARTITION BY user_pseudo_id) AS first_month, FROM base ), month_diff_user_cnt_data AS( #month_diff 및 user_cnt 추출 SELECT month_diff, COUNT(DISTINCT user_pseudo_id) AS user_cnt FROM( SELECT *, DATE_DIFF(event_month, first_month, MONTH) AS month_diff FROM first_month_data ) GROUP BY month_diff ) #first_month_user_cnt 및 retention_ratio 추출 SELECT *, ROUND(SAFE_DIVIDE(user_cnt, first_month_user_cnt), 3) AS retention_rate FROM( SELECT *, FIRST_VALUE(user_cnt) OVER(ORDER BY month_diff) AS first_month_user_cnt FROM month_diff_user_cnt_data ) ORDER BY month_diff 더 보완할 점은 없는지 평가해 주시면 감사하겠습니다. 강의 항상 정말 잘 듣고있습니다.
안녕하세요, 강사님! 강의를 듣던 중 설치 과정에서 문제가 발생하여 질문 남깁니다. 제공해주신 "win64_11gR2_database_1of2" zip 파일의 압축을 해제했는데 , 그안에 또다른 1of2 zip 파일과 동일한 형태의 파일들이 중첩되어 들어있습니다. 상위 압축파일에는 setup.exe 파일이 없고, 내부의 1of2 zip 파일 까지 한번 더 압축을 해제해야 setup 설치 파일이 나타나는 상태입니다. 하지만 추출한 setup.exe 파일을 실행해도 현재 제 환경(win11)에서는 아무런 반응이 없거나 작동하지 않습니다! 감사합니다
선생님, 오라클 인덱스 관리 실무 감각을 좀 잡고 싶어서요. 인덱스를 추가할지 말지 결정하실 때 가장 먼저 보시는 단 하나의 지표가 뭔가요? 그 컬럼으로 조회했을 때 결과가 얼마나 좁게 걸러지는지, 논리읽기(Buffer Gets)가 많은지, 아니면 그 테이블에 INSERT·수정이 잦은지 중에서요. 그리고 경험상 한 테이블에 인덱스가 "이 개수 넘으면 위험하다" 싶은 상한선이 있으세요? 운영 중인 큰 테이블에 새로 만들 때 락이나 부하는 또 어떻게 관리하시는지도 궁금합니다.
강의에서 배운 모델링을 바탕으로 프로젝트를 진행하려고 하는데 궁금한점이 생겼습니다. 1:1 관계인 orders 테이블과 delivery, pay 테이블의 관계에서 외래 키를 보조 테이블에 두었는데, jpa를 이용한 애플리케이션 코드에서는 일대일 관계에서 대상테이블에 외래 키를 두었을때 즉시로딩으로 N+1 문제가 발생할 수 있어서 orders엔티티에 외래 키를 두었습니다. 이때 db와 애플리케이션 간에 테이블 구조가 불일치하기 때문에 오류가 발생할 것으로 예상됩니다. 이 경우 주문과 배송, 결제 정보가 같이 생성된다고 보고 외래 키 위치를 주 테이블에 두어야할까요? 아니면 애플리케이션 코드에서 즉시로딩 문제를 해결해야할까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (강의 실습이후 발생되는 상황 ) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 세션 10. 데이터 무결성 - check 제약조건을 설명하기 위해서, orders 테이블이랑 products 테이블을 지우셨습니다. 사진 처럼 요 그 이후에 워크벤치를 껏다 킨 이후에 my_shop2 db를 보니 my_shop 랑 다르게, @@@ could not be fetched 라는 내용이 발생한다는 것을 알수 있었는데요. orders에 있던 여러 내용 들이 없어져서 이런 문제가 났겠다는 것을 알 수 있었습니다. 이런 경우 view에 남아있는 ordes랑 연결되어있는 조건들때문에 문제가 생겼으니 view에 대한것들을 없애면 원래대로 되는지 알고싶습니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 'case문 - 문제와 풀이 - 1번 문제'에서 영한님은 사진 위쪽 부분 case 문 옆에 category 를 써서 단순 case문으로 해결 하였는데요. 여기서 저는 사진 아래쪽 부분에 적힌대로 category = '전자기기' 를 써서 해결하였습니다. 여기서 질문 입니다. category = '전자기기' 이 코드 처럼 해도, 상관 없는지 알고 싶습니다. + 아래 처럼 한 이유는 위에 쿼리문은 완전히 생각이 안났습니다.