inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

m:n inner join일 경우 cross조인과 동일하게 동작되는건가요?

미해결

데이터 분석 SQL Fundamentals

강의 9:53에 inner join을 했을때 m:n이라서 empno가 7369 인 행이 6건이 출력되었습니다. m:n인 경우 inner join은 cross join와 동작이 동일한걸까요? 둘의 차이점이 멀까요?

  • sql
  • postgresql
  • dbms/rdbms
알고리즘가즈앙 댓글 1 좋아요 0 조회수 155

요청사항이 있습니다!

미해결

시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL

너무 좋은 강의 무료로 제공해주셔서 감사합니다. 혹시 강의자료를 공유받을 수 있을까요? 복습할 때 있으면 도움이 많이 될 것 같아 여쭤봅니다!

  • sql
  • dbms/rdbms
jjjunn0611 댓글 1 좋아요 0 조회수 233

2강. VARCHAR(255) 저장되는 데이터의 길이 정보 질문

해결됨

Real MySQL 시즌 1 - Part 1

안녕하세요. 2강을 수강하면서 궁금한 점이 있어 질문 글 남깁니다. VARCHAR(30) vs VARCHAR(255) 둘 중에서 데이터 타입을 선택할 때 실제 사용하는 길이만큼만 명시해 주는 게 메모리 사용 효율을 높일 수 있다고 말씀해주셨는데요. VARCHAR(30)와 VARCHAR(255) 모두 저장되는 데이터의 길이 정보 를 1 바이트(0~255 표현 가능)로 저장하는 것이 맞는걸까요? 강의 자료에 VARCHAR(30) vs VARCHAR(255) 차이를 설명할 때 '디스크 공간 효율 차이도 미미하게 존재(1바이트 vs 2바이트)'라고 적혀 있어 VARCHAR(255)에서 저장되는 데이터 길이 정보에 2바이트의 공간을 할당한다는 의미로 이해되어서요. 좋은 강의 감사합니다.

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
gmpark 댓글 2 좋아요 0 조회수 559

rollup

미해결

데이터 분석 SQL Fundamentals

그러면 group by를 할때 rollup을 사용하게 되면, group by에 해당하는 컬럼들에 우선순위가 매겨지면서 그들의 합을 보는건가요?? group by(1, 2, 3)이라면 1끼리의 합계, 1+2의 합계, 1+3의 합계, 1+2+3의 합계 이런식으로 보는건가요?

  • sql
  • postgresql
  • dbms/rdbms
joan321 댓글 2 좋아요 0 조회수 109

json 배열 파싱

미해결

장래쌤과 함께하는 쉽고 재미있는 SQL 이야기

안녕하세요..! JSON 파싱에 대해선 강의에 안나와서 질문드립니다..! 한 컬럼에 파싱해야될 제이슨이 배열 형태로 여러개 있을 경우 어떻게 추출해야될지 궁금합니다. 컬럼명을 a 라고 예시로 들자면 a = { 과일=[{"이름" : "사과", "가격" : 2,000}], 음식=[{"이름" : "햄버거", "가격" : 7,500}] , 과일=[{"이름" : "사과", "가격" : 2,000}]} 이런식으로 [ { } ] , [ { } ], [ { } ] 이렇게 여러개가 있습니다 ! unnest 활용해서 a 컬럼 내 "과일"에 대한 item들을 cross join 해서 가져오는건 성공했는데 나머지 값들은 어떻게 추출하는지 모르겠어서 다른 방법이 있는지 궁금합니다!

  • sql
  • mysql
  • oracle
  • dbms/rdbms
  • mssql
hunter 댓글 2 좋아요 0 조회수 234

쿼리 질문드립니다!

해결됨

[7일완성]생각하는 데이터베이스모델링

안녕하세요 선생님. "26_학사관리시스템(SQL실습3)"에 있는 쿼리 중에 조인과 서브쿼리 중 대체적으로 어떤 방법이 성능에 더 좋은지 궁금해서 질문드립니다. 두 가지 질의에 대해서 3가지 방법으로 조인과 서브쿼리를 섞어보았는데 조언 부탁드립니다. 감사합니다. -- 교양엉어 과목을 수강 신청한 학생의 이름 -- 1. JOIN 2번 select s. student_name from student_course sc JOIN student s on sc. student_id = s. student_id JOIN course c on sc. course_code = c. course_code where c. course_name = '교양 영어' ; -- 2. JOIN 1번, where 절에 subQuery 1번 select s. student_name from student_course sc JOIN student s on sc. student_id = s. student_id where course_code = ( select course_code from course where course_name = '교양 영어' ) ; -- 3. where 절에 subQuery 2번 select s. student_name from student s where s. student_id in ( select student_id from student_course where course_code = ( select course_code from course where course_name = '교양 영어' )) ; -- 가교수의 과목을 수강신청한 학생수를 출력 -- 1. JOIN 2번 select count ( student_id ) as cnt -- count(student_id) as cnt from student_course sc JOIN course c on sc. course_code = c. course_code JOIN professor p on c. professor_code = p. professor_code where p. professor_name = '가교수' ; -- 2. JOIN 1번, WHERE 절에 subQuery 1번 select count (sc. student_id ) as cnt from student_course sc where course_code in ( select c. course_code from course c JOIN professor p on c. professor_code = p. professor_code where p. professor_name = '가교수' ) ; -- 3. where 절에 subQuery 2번 select count (sc. student_id ) as cnt from student_course sc where sc. course_code in ( select c. course_code from course c where professor_code = ( select professor_code from professor p where professor_name = '가교수' )) ;

  • dbms/rdbms
  • ERD
  • backend
  • sql
맛땅 댓글 2 좋아요 0 조회수 171

앱 세팅 데이터에 대한 질문이 있습니다.

미해결

비전공자도 이해할 수 있는 DB 설계 입문/실전

안녕하세요! 강의 재밌게 잘 듣고 있습니다. 투두리스트 실습 중 궁금한 부분이 생겨서 질문 남깁니다. 저는 UI를 보고 앱 세팅에 관련된 데이터도 저장해야 된다고 생각해서 app_colors, app_typographies, app_languages 세 가지 테이블을 만들었습니다. 하지만 강의에서는 이 데이터를 따로 저장하지 않으셨는데 저장하지 않은 이유가 궁금합니다.

  • dbms/rdbms
  • database
  • dba
yeonjin1939 댓글 2 좋아요 0 조회수 152

Dbeaver에 접속해도 postgressql이 네비게이터에 안보입니다.

미해결

데이터 분석 SQL Fundamentals

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 디비버에 접속을 하면 postgres는 안보이고 샘플 데이터 베이스만 보입니다. 혹시 디비버를 삭제하고 다시 설치해야 하는 걸까요?

  • sql
  • postgresql
  • dbms/rdbms
qjawls7366 댓글 2 좋아요 0 조회수 399

performance_schema.events_stages_history_long, performance_schema.events_statements_history_long 테이블에 데이터가 쌓이지 않고 있습니다.

미해결

MySQL 성능 최적화

안녕하세요 우선 좋은 강의 남겨주셔서 감사합니다. 인덱스 다이브 최적화 영상을 보고 따라 해보았는데요. 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_long performance_ schema.events _statements_history_long 이 테이블이 아무것도 쌓이지 않는다는 것을 확인하였습니다. 왜 이런 현상이 나타나는걸까요? 참고로 버전은 MySQL (ver. 9.1.0) 이고 docker 를 이용해 서버를 구동했었습니다.

  • sql
  • mysql
  • dbms/rdbms
  • optimizing
리나 댓글 1 좋아요 0 조회수 138

LIMIT, OFFSET을 사용하는 것과 범위 기반 방식의 성능 차이

해결됨

Real MySQL 시즌 1 - Part 1

안녕하세요. 강의 잘 듣고 있습니다. 제가 이해한바로는 LIMIT, OFFSET은 앞에서부터 data를 순차적으로 읽기때문에 성능 상 좋지 않고 이를 개선하기 위해 범위 기반 방식을 사용한다고 이해하였습니다. 범위 기반 방식은 직접 ID 값을 지정 해주는 방식이며, id 기반으로 5000단위로 조회한다고 가정하면 1회차: select * from users where id > 0 AND id <= 5000 2회차: select * from users where id > 5000 AND id <= 1000 위와 같이 구현될 것으로 예상됩니다. 관련해서 궁금한 점이 생겼는데요. 결국 두번째 쿼리를 실행 시 5000보다 큰 id를 찾는 과정에 시간이 소요될 것으로 예상되는데요, id가 index로 지정되어있어 LIMIT, OFFSET 방식보다 빠르게 찾을 수 있는 것인가요?? LIMIT, OFFSET 방식 사용 시 어떤 컬럼이 index로 지정되어있는지와 상관없이 무조건 순차 탐색이 일어나는 것이고 범위 기반으로 조회 시 index로 서치하기때문에 더 빠르게 시작점을 탐색할 수 있다고 이해하면 될까요?

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
박정선 댓글 2 좋아요 0 조회수 381

애플실리콘(M1) 몽고DB 최초 설치 후 실행 시 에러 Error: Permission denied

미해결

[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)

(해결된 문제로 혹시나... 이력을 위해 등록합니다) 저는 몽고db 8.0을 설치하였고 강의 영상과 다르게 arm관련 메시지가 없어서 쭉쭉 설치 모두 진행하고 마지막 실행 시에 에러 메시지가 노출된 경우입니다. Error: Permission denied @ rb_sysopen - /Users/user/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist 요런식으로 권한 문제 메시지였고 관련해서 찾아본 결과 https://parker-park.tistory.com/18 요 블로그?를 참고하여 해결할 수 있었습니다. 저는 유저명이 user 라서 아래와 같이... sudo chown user /Users/ user /Library/LaunchAgents

  • python
  • mongodb
  • dbms/rdbms
  • 데이터-엔지니어링
상빠 댓글 1 좋아요 0 조회수 241

제발...오류가 계속 납니다

미해결

데이터 분석 SQL Fundamentals

uninstaller로 삭제하고 터미널에서도 2차 확인하고 다시 설치후에 비밀번호를 작성하였는데도 안됩니다. 제발 도와주세요,,,, .

  • sql
  • postgresql
  • dbms/rdbms
joan321 댓글 2 좋아요 0 조회수 258

오류가 뜹니다..

미해결

데이터 분석 SQL Fundamentals

postgresql설치 후에 연결을 하는데 비밀번호를 맞게 입력했는데도 FATAL: password authentication failed for user "postgres" 이런 오류가 뜨는데 어떻게 해야할까요ㅜㅜ 맥북 사용중입니다

  • sql
  • postgresql
  • dbms/rdbms
joan321 댓글 2 좋아요 0 조회수 144

unique index가 걸린 상황에서 s-lock, x-lock 질문

해결됨

Real MySQL 시즌 1 - Part 2

안녕하세요? 먼저 좋은 강의 감사합니다. 7:50쯤 unique 제약조건이 걸린 상황에서 deadlock이 발생하는 경우에 질문이 있어서 글 남깁니다. 말씀주신 시나리오는 unique index가 걸린 컬럼이 delete가 수행되면서, 동시에 insert into 구문이 들어오는 상황으로 말씀주셨는데요. unique index는 s-lock을 꼭 필요로 한다면, delete가 선행되지 않는 상황에서도 deadlock이 발생해야되는거 아닌가? 싶습니다. 상상하는 예시는 다음과 같습니다. tx-1 : begin; insert into tab(pk) values(2) (index 2 또는 그 범위에 s-lock) tx-2 : begin; insert into tab(pk) values(2) (index 2 또는 그 범위에 s-lock) tx-1 : commit; -> index 2에 x-lock을 잡으려고 하지만 tx-2가 s-lock을 잡고 있어서 잡을 수 없음 하지만, 실제로 테스트 해보았을 때는 tx-1이 commit시에 정상적으로 insert 되고, tx-2는 duplicated key 오류를 반환합니다. 왜 이런지 알 수 있을까요? 감사합니다 😃 다시 한 번 생각해보니, tx-1은 pk=2 가 없기 때문에 insert 후 x-lock으로 전환하고, tx-2는 x-lock으로 인해 lock_wait인 것 같습니다. 혹시 맞을까요? delete 가 선행된 경우는 이미 있는 레코드에 tx-1,2가 s-lock이을 잡으면서 delete가 commit된 시점에 tx-1,2가 x-lock을 획득하려는데서 dead lock이 발생하는 것이고요

  • mysql
  • dbms/rdbms
  • backend
  • query-tuning
  • mysql-query
댓글 2 좋아요 0 조회수 568

계산 로직을 Java 단이 아닌 쿼리문에서 하신 이유가 궁금합니다.

미해결

[7일완성]생각하는 데이터베이스모델링

select sum(cp.quantity * p.price) as totalAmount from customer_product cp inner join product p on cp.product_number = p.product_number where cp.customer_id = #{customer_id} 장바구니에 들어있는 상품의 개수와 가격을 곱한 금액의 총합을 구하는 로직을 17:50 쯤에 보여주셨습니다. DB에 Connection하는 비용을 고려하면 계산 로직은 Java에서 처리하는 게 더 빠르지 않을까 생각했습니다. 실무에서 많이 사용한다던가, 아니면 더 좋은 방법이라고 생각하셨던 이유가 있었을까요?

  • sql
  • dbms/rdbms
  • ERD
  • backend
Bruce Han 댓글 2 좋아요 0 조회수 236

MYSQL로 database 연결해도 되나요?

미해결

데이터 분석 SQL Fundamentals

안녕하세요! 기존에 SQL을사용했었어서, MYSQL이 설치되어있는 상태인데 MySQL을 기존 그대로 database로 설정해도 되나요?

  • sql
  • dbms/rdbms
joan321 댓글 2 좋아요 0 조회수 157

인덱스 많은 테이블에서 데이터 많아질 수록 insert 속도 증가

해결됨

비전공자도 이해할 수 있는 MySQL 성능 최적화 입문/실전 (SQL 튜닝편)

-- 테이블 A: 인덱스가 없는 테이블 CREATE TABLE test_table_no_index ( id INT AUTO_INCREMENT PRIMARY KEY , column1 INT , column2 INT , column3 INT , column4 INT , column5 INT , column6 INT , column7 INT , column8 INT , column9 INT , column10 INT ) ; -- 테이블 B: 인덱스가 많은 테이블 CREATE TABLE test_table_many_indexes ( id INT AUTO_INCREMENT PRIMARY KEY , column1 INT , column2 INT , column3 INT , column4 INT , column5 INT , column6 INT , column7 INT , column8 INT , column9 INT , column10 INT ) ; -- 각 컬럼에 인덱스를 추가 CREATE INDEX idx_column1 ON test_table_many_indexes ( column1 ) ; CREATE INDEX idx_column2 ON test_table_many_indexes ( column2 ) ; CREATE INDEX idx_column3 ON test_table_many_indexes ( column3 ) ; CREATE INDEX idx_column4 ON test_table_many_indexes ( column4 ) ; CREATE INDEX idx_column5 ON test_table_many_indexes ( column5 ) ; CREATE INDEX idx_column6 ON test_table_many_indexes ( column6 ) ; CREATE INDEX idx_column7 ON test_table_many_indexes ( column7 ) ; CREATE INDEX idx_column8 ON test_table_many_indexes ( column8 ) ; CREATE INDEX idx_column9 ON test_table_many_indexes ( column9 ) ; CREATE INDEX idx_column10 ON test_table_many_indexes ( column10 ) ; -- 높은 재귀(반복) 횟수를 허용하도록 설정 -- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.) SET SESSION cte_max_recursion_depth = 100000 ; -- 인덱스가 없는 테이블에 데이터 10만개 삽입 INSERT INTO test_table_no_index ( column1 , column2 , column3 , column4 , column5 , column6 , column7 , column8 , column9 , column10 ) WITH RECURSIVE cte AS ( SELECT 1 AS n UNION ALL SELECT n + 1 FROM cte WHERE n < 100000 ) SELECT FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ) FROM cte ; -- 인덱스가 많은 테이블에 데이터 10만개 삽입 INSERT INTO test_table_many_indexes ( column1 , column2 , column3 , column4 , column5 , column6 , column7 , column8 , column9 , column10 ) WITH RECURSIVE cte AS ( SELECT 1 AS n UNION ALL SELECT n + 1 FROM cte WHERE n < 100000 ) SELECT FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ), FLOOR ( RAND () * 1000 ) FROM cte ; 를 그대로 사용했는데, index 가 많은 테이블에 데이터가 많아질 수록 insert 시 속도가 느려져야 될 것 같은데 느려지지 않는 것 같습니다. auto commit 모드이고 결과는 1차 : 10만개 삽입시 소요시간 3s 2차 : 10만개 삽입시 소요시간 4s 3차 : 10만개 삽입시 소요시간 4s 4차 : 10만개 삽입시 소요시간 4s 5차 : 10만개 삽입시 소요시간 4s 6차 : 10만개 삽입시 소요시간 4s 입니다. 뭔가 db 환경 문제일까요? db : MariaDB version: 10.6.15 입니다.

  • sql
  • mysql
  • dbms/rdbms
  • query-tuning
전종복( Jong Bok Jun) 댓글 3 좋아요 0 조회수 495

hugepage_settings.sh 파일 실행시 커널 버전

미해결

오라클 성능 분석과 인스턴스 튜닝 핵심 가이드

안녕하세요. 강의를 들으면서 열심히 따라해보고 있는데요. 현재 오라클 클라우드에서 제공되는 vm이 레드햇 8.8 버전이라 커널버전이 5.x 입니다. hugepage_settings.sh 쉘스크립트 내용에 5.x 커널버전에 대해선 명시가 안되어있어서 스크립트 실행이 안되는데요. 아래처럼 수정해서 4.x 버전과 동일하게 수행해도 될까요? '2.6' | '3.8' | '3.10' | '4.1' | '4.14' | '5.*' ) # For RedHat 8 (and newer), use vm.nr _hugepages echo "Recommended setting: vm.nr _hugepages = $NUM_PG" ;;

  • oracle
  • dbms/rdbms
bsjhks 댓글 2 좋아요 0 조회수 237

강의중 윈도우 경고음?이 너무 크게 들릴때가 있습니다.

미해결

오라클 성능 분석과 인스턴스 튜닝 핵심 가이드

안녕하세요. 강의는 잘 듣고있습니다. 제가 이어폰으로 소리를 듣고있는데 가끔 강의중 윈도우 경고음?이 너무 크게 들릴때가 있어서 놀라고 그럽니다.. 키보드 치실때 한번씩 그러는데... 귀청이 나갈거 같습니다ㅠ 녹화된 영상이라 어떻게 처리가 안되려나요??

  • oracle
  • dbms/rdbms
bsjhks 댓글 3 좋아요 0 조회수 179

인기 태그

인프런 TOP Writers

주간 인기글