묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결업무에 바로 쓰는 SQL 튜닝
BNL Join 사용
SELECT EMP.emp_id, EMP.first_name, EMP.last_name, GRADE.grade_nameFROM GRADE, EMP; -- 카테시안 곱 mariadb로 실습을 진행했는데 hash join이 쓰이는게 아니라flat, BNL join을 사용한다고 되어 있네요?BNL Join은 MySQL이 인덱스가 없거나 사용할 수 없는 상황에서 기본적으로 사용하는 비효율적인 조인 알고리즘이라는데 원인이 무엇일까요?grade 테이블을 hash join table로 사용하지 않네요?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
실습 코드 깃허브 업로드
안녕하세요! 데이터분석 직무로 SQL 수업을 듣게 되었습니다! 혹시 실습하면서 정리한 코드 깃허브에 업로드가 가능할까요? - 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결데이터 분석 SQL Fundamentals
Dbeaver오류
Dbeaver 설치하고 영상처럼 sql연결하였더니 연결오류라고 나옵니다어떤걸 해결해야할까요- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
강의 질문 있습니다
having에 있는 쿼리문을 where문으로 바꿔서 최적화 시키는 것은 이해가 갔습니다. 강의에는 인덱스 사용이 없어서 제가 한번 적용시켜보려고 멀티 컬럼(year, semester) 이렇게 넣고 explain 해보니 ref와 eq_ref가 떴는데도 불구하고 속도는 차이가 별반 다를게 없네요(2초 후반)인덱스를 어떻게 넣어야할지 알려주시면 감사합니다
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
sql_safe_updates 옵션
sql_safe_updates 옵션때문에 강의처럼 쿼리문을 작성할 경우, 업데이트가 되지 않습니다. 이 부분은 끄고 진행해도 되나요? 그리고 현업에서 보통 끄고 데이터 작업을 하는지 궁금합니다
-
미해결업무에 바로 쓰는 SQL 튜닝
select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요?
안녕하세요. 우선 좋은 강의 만들어주셔서 정말 감사합니다 :)select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요? 5-2. 실행계획 항목(1) -> 05:40 영상을 확인해보면 실행계획에서 table 필드 값 "e" 하고 "s" 가 있는데요.여기서 질문 2가지가 있습니다.질문1: 여기서 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요?(실행 계획 통해 조회된 데이터 순서대로 판단하면 되는것인지... 궁금하네요.. 그런데 이걸로 100% 판단하기에 조금 어렵다고 들어서요...)질문2:만약 테이블 "e" 가 드라이빙 테이블이라고 가정시실질적으로 쿼리 수행할때 테이블 "e" 에 대한 where 절 조건을 이용해서 먼저 필터링 한다음에테이블 "s" 하고 조인 수행을 하는것인지 궁금 합니다.즉 드리아빙 테이블 조건절 이용해서 최대한 필터링 하고그다음 드이븐 테이블하고 조인을 수행하는지 궁금합니다.
-
미해결장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
create view
안녕하세요 선생님. Create 구문을 작성했는데 선생님 자료와 달리 0row affected. 라고 나오며 데이터 결과가 없는 걸로 나옵니다. create에 커서를 대면 create is not vaild at this position, expection EOF, ";"라고 나오는데 이것과 관계가 있을까요? 아니면 제가 어떤 구문을 잘못 작성한 것일까요? 확인 부탁드리겠습니다.
-
미해결데이터 분석 SQL Fundamentals
직원 별 가장 높은 매출
14:38초 예제에서 직원별 개별 상품 매출액, 직원별로 가장 높은 매출 대비 개별 상품 매출 비율 구하기 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 -- ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id )select sum_by_emp_prod,sum_by_emp_prod/max(sum_by_emp_prod)over(partition by employee_id) from temp_01; group by할때 왜 product_id도 group by하나요? 직원별 개별 상품인데 employee_id와 그룹바이 하면 되는거 아닌가여 ? 직원별로 가장 높은 매출을 max(sum_by_emp_prod)over(partition by employee_id) 이렇게 구하셧는데 with절에서 group by로 해서 with temp_01 as( select employee_id ,sum(amount)as sum_by_emp_prod --직원별 개별 상품 매출액 ,max (amount) as max_emp --직원 별 가장 높은 매출 from orders a join order_items b on a.order_id=b.order_id group by employee_id ) 이렇게 구하면 안되나여?
-
미해결데이터 분석 SQL Fundamentals
강의순서대로 실습코드순알려주세요.
복습할려는데..실습코드순서를 모르겟어요
-
해결됨SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법
USE EPlanHeap 구문 실행 오류
안녕하세요.예제 스크립트 실행 중 오류가 확인되어 문의드립니다. EPlan 테이블 생성 구문을 이용하여 Eplan 테이블은 정상적으로 생성된 듯 보이나, 예제 구문 중USE EPlanHeap 선택 시 EPlanHeap라는 테이블이 존재하지 않는다는 오류가 발생하고 있습니다 MSSql에는 테이블에 대한 Heap를 생성하는 별도의 구문이 존재하는 것이 맞을까요?EPlanHeap 테이블이 테이블 생성 구문이 정상적으로 실행되면 생성되는 테이블이 맞을까요?해당 테이블이 생성되었는지 확인할 수 있는 방법이 있을까요?확인 부탁드립니다. 감사합니다 :)
-
해결됨Real MySQL 시즌 1 - Part 1
[오타 제보] 선행 데이터를 기반으로 한 데이터 분석
안녕하세요~!강의에 오타가 있는 것 같아서 질문 드립니다.e2 서브쿼리에 user_id도 select 절에 포함되야 할 것 같아요!select sum(sign_up) as signed_up, sum(complete_purchase) as completed_purchase, (sum(complete_purchase) / sum(sign_up) * 100) as conversion_rate from ( -- 1월에 새로 가입한 유저 목록 select user_id, 1 as sign_up, min(created_at) as sign_up_time from user_events where event_type = 'SIGN_UP' and created_at >= '2024-01-01' and created_at < '2024-02-01' group by user_id ) e1 left join ( -- 처음 결제한 시점 정보 목록 select user_id, 1 as complete_purchase, min(created_at) as complete_purchase_time from user_events where event_type = 'COMPLETE_PURCHASE' group by user_id ) e2 on e2.user_id = e1.user_id and e2.complete_purchase_time >= e1.sign_up_time and e2.complete_purchase_time < date_add(e1.sign_up_time, interval 7 day);
-
미해결데이터 분석 SQL Fundamentals
m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?
강의 9:53에 inner join을 했을때 m:n이라서 empno가 7369 인 행이 6건이 출력되었습니다. m:n인 경우 inner join은 cross join와 동작이 동일한걸까요?둘의 차이점이 멀까요?
-
미해결시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL
요청사항이 있습니다!
너무 좋은 강의 무료로 제공해주셔서 감사합니다.혹시 강의자료를 공유받을 수 있을까요? 복습할 때 있으면 도움이 많이 될 것 같아 여쭤봅니다!
-
해결됨Real MySQL 시즌 1 - Part 1
2강. VARCHAR(255) 저장되는 데이터의 길이 정보 질문
안녕하세요. 2강을 수강하면서 궁금한 점이 있어 질문 글 남깁니다. VARCHAR(30) vs VARCHAR(255) 둘 중에서 데이터 타입을 선택할 때 실제 사용하는 길이만큼만 명시해 주는 게 메모리 사용 효율을 높일 수 있다고 말씀해주셨는데요.VARCHAR(30)와 VARCHAR(255) 모두 저장되는 데이터의 길이 정보를 1 바이트(0~255 표현 가능)로 저장하는 것이 맞는걸까요?강의 자료에 VARCHAR(30) vs VARCHAR(255) 차이를 설명할 때 '디스크 공간 효율 차이도 미미하게 존재(1바이트 vs 2바이트)'라고 적혀 있어 VARCHAR(255)에서 저장되는 데이터 길이 정보에 2바이트의 공간을 할당한다는 의미로 이해되어서요. 좋은 강의 감사합니다.
-
미해결데이터 분석 SQL Fundamentals
rollup
그러면 group by를 할때 rollup을 사용하게 되면, group by에 해당하는 컬럼들에 우선순위가 매겨지면서 그들의 합을 보는건가요?? group by(1, 2, 3)이라면 1끼리의 합계, 1+2의 합계, 1+3의 합계, 1+2+3의 합계 이런식으로 보는건가요?
-
미해결장래쌤과 함께하는 쉽고 재미있는 SQL 이야기
json 배열 파싱
안녕하세요..! JSON 파싱에 대해선 강의에 안나와서 질문드립니다..! 한 컬럼에 파싱해야될 제이슨이 배열 형태로 여러개 있을 경우 어떻게 추출해야될지 궁금합니다. 컬럼명을 a 라고 예시로 들자면 a = { 과일=[{"이름" : "사과", "가격" : 2,000}], 음식=[{"이름" : "햄버거", "가격" : 7,500}] , 과일=[{"이름" : "사과", "가격" : 2,000}]} 이런식으로 [ { } ] , [ { } ], [ { } ] 이렇게 여러개가 있습니다 ! unnest 활용해서 a 컬럼 내 "과일"에 대한 item들을 cross join 해서 가져오는건 성공했는데 나머지 값들은 어떻게 추출하는지 모르겠어서 다른 방법이 있는지 궁금합니다!
-
해결됨[7일완성]생각하는 데이터베이스모델링
쿼리 질문드립니다!
안녕하세요 선생님."26_학사관리시스템(SQL실습3)"에 있는 쿼리 중에 조인과 서브쿼리 중 대체적으로 어떤 방법이 성능에 더 좋은지 궁금해서 질문드립니다.두 가지 질의에 대해서 3가지 방법으로 조인과 서브쿼리를 섞어보았는데 조언 부탁드립니다.감사합니다. -- 교양엉어 과목을 수강 신청한 학생의 이름-- 1. JOIN 2번select s.student_namefrom student_course scJOIN student s on sc.student_id = s.student_idJOIN course c on sc.course_code = c.course_codewhere c.course_name = '교양 영어';-- 2. JOIN 1번, where 절에 subQuery 1번select s.student_namefrom student_course scJOIN student s on sc.student_id = s.student_idwhere course_code = (select course_codefrom coursewhere course_name = '교양 영어');-- 3. where 절에 subQuery 2번select s.student_namefrom student swhere s.student_id in (select student_id from student_coursewhere course_code = (select course_code from coursewhere course_name = '교양 영어' ));-- 가교수의 과목을 수강신청한 학생수를 출력-- 1. JOIN 2번select count(student_id) as cnt -- count(student_id) as cntfrom student_course scJOIN course c on sc.course_code = c.course_codeJOIN professor p on c.professor_code = p.professor_codewhere p.professor_name = '가교수';-- 2. JOIN 1번, WHERE 절에 subQuery 1번select count(sc.student_id) as cntfrom student_course scwhere course_code in (select c.course_code from course cJOIN professor p on c.professor_code = p.professor_code where p.professor_name = '가교수');-- 3. where 절에 subQuery 2번select count(sc.student_id) as cntfrom student_course scwhere sc.course_code in (select c.course_code from course cwhere professor_code = (select professor_code from professor pwhere professor_name = '가교수'));
-
미해결비전공자도 이해할 수 있는 DB 설계 입문/실전
앱 세팅 데이터에 대한 질문이 있습니다.
안녕하세요! 강의 재밌게 잘 듣고 있습니다.투두리스트 실습 중 궁금한 부분이 생겨서 질문 남깁니다.저는 UI를 보고 앱 세팅에 관련된 데이터도 저장해야 된다고 생각해서 app_colors, app_typographies, app_languages 세 가지 테이블을 만들었습니다. 하지만 강의에서는 이 데이터를 따로 저장하지 않으셨는데 저장하지 않은 이유가 궁금합니다.
-
미해결데이터 분석 SQL Fundamentals
Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.디비버에 접속을 하면 postgres는 안보이고 샘플 데이터 베이스만 보입니다. 혹시 디비버를 삭제하고 다시 설치해야 하는 걸까요?
-
미해결MySQL 성능 최적화
performance_schema.events_stages_history_long, performance_schema.events_statements_history_long 테이블에 데이터가 쌓이지 않고 있습니다.
안녕하세요 우선 좋은 강의 남겨주셔서 감사합니다. 인덱스 다이브 최적화 영상을 보고 따라 해보았는데요. SHOW VARIABLES LIKE 'performance_schema';`performance_schema` 퍼포먼스 스키마 조회를 하게된다면 이렇게 ON 으로 되어 있습니다.UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'statement/%'; UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE NAME LIKE 'stage/%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_stages%'; UPDATE performance_schema.setup_consumers SET ENABLED = 'YES' WHERE NAME LIKE 'events_statements%%';퍼포먼스 스키마에 필요한 지표들을 수집 하도록 하고 테이블에 저장 할 수 있도록 해당 쿼리문을 실행 했습니다. 이에 대한 해당 테이블 조회 값 입니다. (performance_schema.setup_instruments 테이블은 너무 많아 생략하고 performance_schema.setup_consumers 만 보여드립니다.) 그리고 해당 orders 테이블을 조회 하고 나서SELECT stages.EVENT_ID, statements.EVENT_ID, statements.END_EVENT_ID, statements.SQL_TEXT, stages.EVENT_NAME, stages.TIMER_WAIT / 100 FROM performance_schema.events_stages_history_long AS stages JOIN performance_schema.events_statements_history_long AS statements ON (stages.EVENT_ID >= statements.EVENT_ID AND stages.EVENT_ID <= statements.END_EVENT_ID) WHERE stages.EVENT_NAME LIKE '%statistics%' AND statements.SQL_TEXT LIKE '%FROM orders%' AND statements.SQL_TEXT NOT LIKE '%SELECT stages.EVENT_ID,%' ORDER BY statements.EVENT_ID DESC; performance_schema 를 통해 성능 비교 했는데요. 아무것도 나오지가 않습니다. 실제로performance_schema.events_stages_history_longperformance_schema.events_statements_history_long이 테이블이 아무것도 쌓이지 않는다는 것을 확인하였습니다. 왜 이런 현상이 나타나는걸까요? 참고로 버전은 MySQL (ver. 9.1.0) 이고 docker 를 이용해 서버를 구동했었습니다.