묻고 답해요
152만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결데이터 분석 SQL Fundamentals
1인지 M인지는 결국엔 테이블을 직접 확인을 해야 하는걸까요?
테이블을 열어서 봤을 때 on에서 서로 연결할 키들의 중복들이 많으면 이 테이블은 M이고유니크하면 1이 된다 라고 이해하면 될까요?그래서 emp_salary_hist, emp_dept_hist, emp는 m이고dept는 1 로 이해 했는데 맞게 이해한 건지 궁금합니다.감사합니다.
-
미해결JPA (ORM) 개발자를 위한 고성능 SQL (High-Performance SQL)
소스코드 DB 세팅 가이드가 필요합니다.
소스코드 너무 감사합니다.근데 돌려도 동작이 안되기 때문에 DB 세팅 가이드 같은게 있으면 좋겠네요.강의 내용은 좋은데 ..
-
해결됨옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
[막강] IoC방법 공부를 할 때?
스프링 IoC를 공부하려면 @Configuration+@Bean 학습을 하려고 하는데, @AppConfig같은 것으로 공부를 해야하는지, 어떻게 해야할지 조그만한 힌트를 주시면 감사하겠습니다.
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
풀 인덱스 스캔 질문있습니다.
CREATE INDEX idx_name ON users (name); EXPLAIN SELECT * FROM users ORDER BY name LIMIT 10; <- 이 부분에서 idx_name을 안쓰고 컬럼명만 작성했는데 어떻게 풀 인덱스 스캔을 썼는지 아는건가요?
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
멀티컬럼인덱스 질문있습니다.
강의자료:https://jscode.notion.site/661a5bcd11c74b4c97520460dbc4a328주의 사항 2에서요. 정렬을 자세히 잘 살펴보면 이름 기준으로 정렬이 되어 있지는 않다. 왜냐면 같은 부서를 가진 데이터끼리만 정렬을 시켰기 때문이다. 실제로 아래 SQL문을 실행시킬 때 인덱스를 활용하지 못한다.윗 부분에 말 뜻이. 처음부터 이름 순으로 정렬이 안되어있어서 멀티컬럼인덱스가 사용이 어렵다는 말씀인가요?즉 아래 컬럼 처럼 안되어 있어서 멀티 컬럼인덱스가 적용이 안된다는 말씀인가요?부서 | 이름 | 순위----------------------회계 | 김미현 | 2 회계 | 김민재 | 3 인사 | 하재원 | 6 운영 | 이재현 | 4 운영 | 조민규 | 5 인사 | 최지우 | 7 회계 | 박미나 | 1
-
미해결오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
HOST CPU 자료를 받으려면?
HOST CPU는 AWR 뷰를 통해서 조회하여 나타나게 할 수 있는데, 저도 실제 서버하고와의 오차는 있다고 듣기도 했고, 보기도 했습니다. 강사님은 보통 실제 CPU 그래프를 표현한다면,서버에서 내려 받은 정보로 하시나요?
-
미해결시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL
강의자료 다운 질문..
안녕하세요..혹시 강의 자료는 어디서 다움받을수 있나요 ?커리클럼에서는 자료 다운이 없어서요..감사합니다.
-
해결됨데이터 분석 SQL Fundamentals
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다.
안녕하세요. 튜닝핵심가이드강의 관련해서 여쭤보고 싶어서 남깁니다. 현역으로 5년차 인데 요즘들어 쿼리성능적으로 실행계획에 관심이 가서 해석과 튜닝을 잘하고 싶어서 선생님께서 강의하시는 [오라클 성능 분석과 인스턴스 튜닝 핵심 가이드]를 들으면 실행계획을 해석과 스스로 튜닝까지 할 수 있는데까지 설명해주시는지 궁금합니다!!
-
미해결비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
쿼리 튜닝 관련 질문 (limit)
안녕하세요 강사님 좋은 강의 정말 감사드립니다. 실습 따라면서 튜닝을 익혀가고있는데 이번 강의에서 이해되지 않는 부분이 있어 질문 남깁니다.일단 저는 MariaDB를 이용하여 실습을 하고 있습니다 죄송합니다 ㅠ -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100;두 쿼리 실행 속도에 별로 차이가 없어서 1) students, scores 두 테이블 각각 데이터 300만개로 늘리고 2) 두 쿼리 모두 동일하게 limit 10을 붙여줬더니 갑자기 성능 차이가 엄청나게 났습니다. -- 튜닝 전 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 AND sc.year=2024 AND sc.semester=1 LIMIT 10; -- 튜닝 쿼리 SELECT st.student_id, st.name, AVG(sc.score) AS average_score FROM students st JOIN scores sc ON st.student_id = sc.student_id WHERE sc.year=2024 AND sc.semester=1 GROUP BY st.student_id, st.name, sc.year, sc.semester HAVING AVG(sc.score)=100 limit 10;제가 궁금한 것은 limit 10을 붙이면 튜닝을 하든 안하든 실행 속도가 더 줄어들어야 할 것 같은데 튜닝 전 쿼리가 갑자기 1분넘게 소요되더라고요.튜닝 후 쿼리는 limit을 붙이나 안붙이나 별 차이가 없는데 튜닝 전 쿼리는 왜 limit을 붙이면 갑자기 성능이 엄청나게 저하되는걸까요..?? 확인해주시고 답변 주시면 많은 도움 될 것 같습니다 감사합니다!
-
해결됨비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)
페이지기반 페이지네이션 쿼리를 최적화하고 싶습니다.
게시판 비슷한 기능을 구현중인데 아무래도 커서기반보다는 페이지를 원하는대로 넘나들 수 있는 페이지기반 페이지네이션을 구현하고 싶어서 구현은 했는데 대용량 데이터에는 맞지 않은 듯해서 어떻게 최적화를 하면 좋을지 고민하고 있습니다.현재 저는 Postgres DB를 사용하고 있으며SQL를 전부 올리기보다 고민하고 있는 부분에 대해서만 간략히 적도록 하겠습니다.api에서는 SQL를 연속으로 두번 실행시키고 있습니다.1. 조건에 맞는 모든 ROW를 COUNT2. 1페이지당 사이즈와 현재 페이지로 OFFCET FETCH NEXT ROWS ONLY 절을 사용해서 ROW를 건너뛰고 검색을 하고 있는데지금 구현대로면 최악의 경우일때는 거의 DB 전체를 두번 조회하는거나 다름 없을 것 같습니다.사이드 프로젝트일때는 상관없을 것 같긴한데 실무에서는 어떤방식으로 최적화가 가능할까요?검색을 해보니 대용량 데이터에서는 커서기반으로 하라는 의견이 많은 것 같은데 그래도 페이지기반의 장점을 살리고 싶습니다.
-
미해결데이터 분석 SQL Fundamentals
섹션5 Group by 실습-01 강의 예제 질문
안녕하세요.섹션5의 두번째 강의인 Group by 실습-01 에서 다룬 예제에 대해 질문드립니다. -- 부서명 SALES와 RESEARCH 소속 직원별로 과거부터 현재까지 모든 급여를 취합한 평균 급여select b.empno, max(b.ename) as ename, avg(c.sal) as avg_sal from hr.dept ajoin hr.emp b on a.deptno = b.deptnojoin hr.emp_salary_hist c on b.empno = c.empnowhere a.dname in('SALES', 'RESEARCH')group by b.empnoorder by 1; 이 쿼리에서 b.ename을 집계함수에 넣지 않고 아래와 같이 group by에 넣어서 출력하는 방식으로 해봤는데 결과가 동일하게 나옵니다. select b.empno, b.ename, avg(c.sal) as avg_sal from hr.dept ajoin hr.emp b on a.deptno = b.deptnojoin hr.emp_salary_hist c on b.empno = c.empnowhere a.dname in('SALES', 'RESEARCH')group by b.empno, b.enameorder by 1; 두 쿼리 중 실무적으로 더 권장하는 방법이 있으신가요? 성능 혹은 기능 등의 차이가 있는지도 궁금합니다.
-
미해결데이터 분석 SQL Fundamentals
섹션2 조인 기반 메커니즘에서 조인 실습 - 04 강의 예제 질문
안녕하세요.섹션2 조인 기반 메커니즘에서조인 실습 - 04 강의 중예제에서 질문이 있습니다. -- 고객명 Antonio Moreno이 1997년에 주문한 주문 상품 정보를 고객 주소, 주문 아이디, 주문일자, 배송일자, 배송 주소 및 -- 주문 상품 아이디, 주문 상품명, 주문 상품별 금액, 주문 상품이 속한 카테고리명, supplier명을 구할 것. select a.contact_name, a.address, b.order_id, b.order_date, b.shipped_date, b.ship_address, c.product_id, d.product_name, c.amount, e.category_name, f.contact_name as supplier_namefrom nw.customers ajoin nw.orders b on a.customer_id = b.customer_idjoin nw.order_items c on b.order_id = c.order_idjoin nw.products d on c.product_id = d.product_idjoin nw.categories e on d.category_id = e.category_idjoin nw.suppliers f on d.supplier_id = f.supplier_idwhere a.contact_name = 'Antonio Moreno'and b.order_date between to_date('19970101', 'yyyymmdd') and to_date('19971231', 'yyyymmdd') 이 예제에서 볼드친 product_id를 order_items 테이블이 아닌 products 테이블의 product_id로 끌어와도 괜찮은지 궁금합니다.결과는 동일하게 나오는데 혹시나 차이가 있는지 궁금합니다.
-
미해결데이터 분석 SQL Fundamentals
섹션2 조인 실습 01 강의 질문
안녕하세요.섹션2 조인 실습 01 강의에서 질문이 있습니다. 조인 실습1의 예제들에서 강사님께서는 join을 사용하시는데 left join을 사용해도 괜찮은지 궁금합니다. 보통 조인 시 일반적으로 left join을 사용한다고 들어서요. 예를 들어 emp 테이블과 dept 테이블을 inner join할 경우 만약의 경우 emp 테이블에 존재하는 직원이 dept 테이블에서 누락되었다면 최종 join 테이블에도 그 직원이 누락될 수 있기 때문에 left join을 쓰는게 안전하지 않나 하는 생각이 들었습니다. 조인 실습1 예제의 4번째 예제에서 날짜 필터링 조건에서 to_date 함수를 쓰지 않고 fromdate >= '1983-01-01' 그냥 이처럼 써도 되는지 궁금합니다. 결과는 동일하게 나오지만 성능적 차이가 있거나 to_date 함수를 사용하는 것이 실무에서 많이 쓰는 방식인건지 궁금합니다. 조인실습1 문제4 - 저의 풀이부서명 SALES와 RESEARCH의 소속 직원들의 부서명, 직원번호, 직원명, JOB 그리고 과거 급여 정보중 1983년 이전 데이터는 무시하고 데이터를 추출하시오SELECTd.dname,e.empno,e.ename,e.job,esh.fromdate,esh.todate,esh.salFROM dept d JOIN emp e ON d.deptno = e.deptno JOIN emp_salary_hist esh ON e.empno = esh.empno WHERE d.dname IN ('SALES', 'RESEARCH')AND esh.fromdate >= '1983-01-01'ORDER BY d.dname, e.empno, e.ename, esh.fromdate;
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
섹션4 화면 자체가 안나와요
다른 영상은 괜찮은데 섹션4는 목소리만 나옵니다. 화면은 블랙화면으로 계속 고정이네요. 다른 섹션은 안그런데... 저만 그런건가요??
-
미해결데이터 분석 SQL Fundamentals
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.
lead lag 이해 강의에서 윈도우 절은 사용되지 않습니다.라는 내용이 이해가 안갑니다..!! 여러 윈도우 함수 이용시에 공통으로 윈도우 절이 사용가능해 보이는데,SELECT id, employee, sale_amount, COUNT(*) OVER w AS total_sales, SUM(sale_amount) OVER w AS total_amount, LEAD(sale_amount) OVER w AS next_sale, LAG(sale_amount) OVER w AS prev_saleFROM salesWINDOW w AS (PARTITION BY employee ORDER BY sale_date); 이런 내용 말고 다른 내용일까요 ?
-
미해결[리뉴얼] 처음하는 SQL과 데이터베이스(MySQL) 부트캠프 [입문부터 활용까지]
강의 화면이 안 보이고, 목소리밖에 안나와요 ;;
- 강의 영상에 대한 질문이 있으시면, 상세히 문의를 작성해주시면, 주말/휴일 제외, 2~3일 내에 답변드립니다 (이외의 문의는 평생 강의이므로 양해를 부탁드립니다.)- 강의 답변이 도움이 안되셨다면, dream@fun-coding.org 로 메일 주시면 재검토하겠습니다. - 괜찮으시면 질문전에 챗GPT 와 구글 검색을 꼭 활용해보세요~- 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL
SQL NOT EXISTS사용과 관련하여 질문이 있습니다.
안녕하세요. 강의 잘 듣고 있습니다.강의 16:18 정도에 나오는 2000년대생이 없는 부서의 id와 name을 찾는 것에서 아래와 같이 쿼리를 하셨는데요:mysql> SELECT D.id, D.name -> FROM department AS D -> WHERE NOT EXISTS ( -> SELECT * FROM employee E -> WHERE D.id = E.dept_id and E.birth_date >= '2000-01-01'); 위의 쿼리를 다음과 같이 바꾸니 아무런 결과가 출력되지 않고 Empty set이라고 나옵니다. 혹시 이유를 알 수 있을까요? 두 쿼리에서 다른점은 빨간 글씨로 써놨는데요. subquery에서 department를 다시 D로 한번 불러준 것 외엔 없습니다. mysql> SELECT D.id, D.name -> FROM department AS D -> WHERE NOT EXISTS( -> SELECT * FROM employee E , department D -> WHERE D.id =E.dept_id AND E.birth_date >= '2000-01-01');Empty set (0.00 sec) 감사합니다.
-
미해결실무 활용 SQL 데이터 분석: 효율적인 데이터 처리와 인사이트 도출
12-2 listing 로드 문제
load할 때 id에 중복값이 있어서 고유키 설정인 안되는데 어떻게 해결하나요
-
해결됨SW 개발자를 위한 성능 좋은 SQL 쿼리 작성법
샘플 쿼리 관련 문의드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.섹션 3. 쿼리 금기사항> Non-SARG, Index 열 값 변형강의 시간 9분 정도에 나오는 3. datediff vs. dateadd 예제의 정상 구현 쿼리가 이상합니다.WHERE ShippedDate >= DATEADD(dd, -1, '19980506')위 조건이면 ShippedDate가 '19980505' 이후 인 모든 데이터가 조회될 것으로 보입니다. DB를 설치하고 진행한게 아니라 실제 데이터가 어떻게 입력되어 있는지는 알 수 없으나 조건이 이상해서 문의드립니다.WHERE ShippedDate >= DATEADD(dd,-1,'19980506') AND ShippedDate <= '19980506'제 생각으론 이렇게 수정해야 맞는 것 같습니다.
-
미해결실무 활용 SQL 데이터 분석: 효율적인 데이터 처리와 인사이트 도출
2-2. 실습 2A 6, 7번 문제
Ex 7. # fact_orders 테이블에서 product id 순으로 다음 10개의 제품을 표시하세요 select product_id, prod_cat_name_eng from ecommerce.dim_products order by product_id limit 10 offset 10; 왜 문제는 'fact_orders 테이블에서'인데 from ecommerce.dim_products인거죠?