일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 백트래킹
- AWS
- 개발
- 율코딩
- Oracle
- Join
- MySQL
- 쿼리
- 문제풀이
- 자료구조
- 백준
- S3
- Index
- DB
- dbeaber
- 코딩
- 알고리즘
- 데이터베이스
- storage_integration
- HackerRank
- 결합인덱스란
- 조인
- 결합인덱스조건
- sql
- dfs
- 인덱스
- 오라클
- 데이터분석
- 인덱스튜닝
- snowflake
- Today
- Total
목록개발 (6)
율코딩
클러스터링 팩터(Clustering Factor)는 특정 컬럼을 기준으로 같은 값을 같는 데이터가 서로 모여있는 정도를 의미라며, 군집성 계수라고 표현할 수있다. CF(클러스터링 팩터)가 좋은 컬럼에 생성한 인덱스는 검색 효율이 매우 좋다. 예를 들어 거주지역 = '제주'에 해당하는 고객 데이터가 물리적으로 근접해 있으면 흩어져 있을 때보다 데이터를 찾는 속도가 빠르다. CF(클러스터링 팩터)가 좋은 컬럼에 생성한 인덱스는 검색 효율이 좋다라는 의미는, 테이블 액세스량에 비해 블록 I/O가 적게 발생함을 의미한다. 그 이유는, 인덱스 ROWID로 테이블을 엑세스할 때, 오라클은 래치 획득과 해시 체인 스캔과정을 거쳐 어렵게 찾아간 테이블 블록에 대한 포인터(메모리 주소값)를 바로 해제하지 않고 일단 유지..
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 이문제는 이진탐색을 활용하여 푸는 문제이다. 반복적으로 gap을 설정하여 c개 이상의 공유기를 설치할 수 있는 경우를 찾는다. 먼저,start, end를 설정하여 최소 gap과 최대 gap 을 설정한다. 예제를 활용하여 코드를 구현해 보자. n,c = 5,3 arr = [1,2,4,8,9] start = arr[1] - arr[0] end = a..
인덱스를 타지 않는 경우 1. 인덱스 컬럼의 변형 select * from table where LOWER(name) ='word'; select * from table where idx - 1 = 5; 이 처럼 인덱스에 변형을 가하게 되면, DBMS가 인덱스를 이용하지 않는다. 2. 인덱스 컬럼의 내부적인 데이터 변환 select * from table where age = '30' 문자값 데이터타입을 갖는 컬럼에 ‘값’ → 값 을 하지 말고 정확한 데이터 타입을 넣어야 인덱스를 탈 수 있다. 3. NOT 또는 IN 연산자 사용 NOT일 경우에도 인덱스를 타긴 타지만, 일반적으로, NOT에 사용된 값이 아닌 데이터의 비율이 높은 경우가 많기 때문에 인덱스를 타지 않는 경우가 많다. 마찬가지로 IN일 경..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/blmK3R/btrCKWgoTgZ/3mNErQHpNerIodb7QsxbEK/img.png)
https://www.hackerrank.com/challenges/challenges/problem?isFullScreen=true Challenges | HackerRank Print the total number of challenges created by hackers. www.hackerrank.com 무슨 이유인지 HackerRank에서 MySQL에서는 with문이 안돼서 FROM 절에서 서브쿼리는 넣는 방식으로 풀었다. 우선, challeges_cnt( 도전 횟수) 가 MAX 값 이거나, challeges_cnt( 도전 횟수) 가 중복값이 없는 것만 가져와야한다. # 1번 쿼리 - challenge_cnt가 MAX인 값만 가져오기 SELECT MAX(t1.challenges_cnt) FROM..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/kLDkG/btrCKX0b6yU/V57cVsmDmg2K2YChrO8L60/img.png)
https://www.hackerrank.com/challenges/full-score/problem Top Competitors | HackerRank Query a list of top-scoring hackers. www.hackerrank.com 만점을 받은 challenge가 2개 이상인 해커를 구하는 문제이다. 그리고 만점 받은 전체 challenge 의 수로 정렬해야한다. ( 개수가 같을 경우, hacker_id로 오름차순으로 정렬하기) 우선, 1. Submissions table에 3개의 테이블을 조인을 하고 Submissions 테이블에서 score가 만점인 데이터만 가져오도록 where에 조건을 걸었다. 2. Group by 로 hacker_id로 묶어줘야하는데 h.name도 출력해야하..
N+1 문제란? 연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1 문제라고 한다. Eager Load Left Outer Join을 의미한다. Eager loading 을 이용하면 한 번의 쿼리문으로 모든 데이타를 추출 할 수 있으며 어플리케이션 성능 향상을 위해서 cache 기능을 적절히 이용하여 사용 할 수 있다. User.eager_load(:workspaces).where(workspaces: {id: 3}) > SELECT `users`.`id` AS t0_r0, `users`.`provider` AS t0_r1, `users`.`uid` AS t0_r2, `user..