728x90 반응형 전체 글150 [SQL튜닝] SORT/MERGE/HASH JOIN [SQL튜닝] SORT/MERGE/HASH JOIN 주요내용 SORT/MERGE JOIN SORT/MERGE JOIN의 수행 절차 SORT/MERGE JOIN이 불리한 경우 SORT/MERGE JOIN의 장단점 HASH JOIN HASH JOIN의 수행 절차 HASH JOIN의 장단점 학습목표 SORT/MERGE/HASH JOIN에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. SORT/MERGE/HASH JOIN을 활용하여 SQL문장을 성능목표에 부합하도록 개선할 수 있다. SORT/MERGE/HASH JOIN 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. SORT/MERGE JOIN 연결고리에 인덱스가 전혀 없는 경우 대용량의 자료를 조인해야 .. 2024. 3. 19. [SQL튜닝] NESTED LOOPS JOIN [SQL튜닝] NESTED LOOPS JOIN 주요내용 NESTED LOOPS JOIN NESTED LOOPS JOIN의 수행 절차 NESTED LOOPS JOIN의 장단점 조인 순서 제어 방법 연결고리에 대한 인덱스 학습목표 NESTED LOOPS 조인에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL문장을 진단할 수 있다. NESTED LOOPS 조인을 활용하여 SQL문장을 성능목표에 부합하도록 개선할 수 있다. NESTED LOOPS 조인 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. NESTED LOOPS JOIN 옵티마이저가 Driving Table을 결정함(Outer Table) Driving Table이 아닌 테이블은 Driven Table로 지정함 -> Inn.. 2024. 3. 19. [SQL튜닝] 인덱스 활용이 불가능한 경우 [SQL튜닝] 인덱스 활용이 불가능한 경우 주요내용 인덱스를 사용하지 말아야 하는 경우 인덱스 사용이 불가능한 경우 옵티마이저에 의한 선택 절차 학습목표 인덱스 사용이 불가능한 경우에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 인덱스 사용이 불가능한 경우, 효율적인 SQL 문장으로 개선할 수 있다. 인덱스 사용이 불가능한 경우, 개선한 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스를 사용하지 말아야 하는 경우 인덱스 스캔을 하면 무조건 빠른가? => 조건에 의한 처리범위가 넓어짐으로 인해 분포도가 나빠지는 경우가 있는데, 이 경우 인덱스 스캔을 하는 것 보다는 FULL TABLE SCAN을 하는 것이 바람직함 FULL TABLE SCAN 시엔 한 번의 I/.. 2024. 3. 13. [SQL튜닝] 결합인덱스 [SQL튜닝] 결합인덱스 주요내용 인덱스 머지 VS 결합인덱스 결합인덱스의 구성 결합인덱스 사용 방법 결합인덱스 컬럼에 대한 '='의 의미 학습목표 결합인덱스에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 결합인덱스를 활용하여 SQL 문장을 성능목표에 부합하도록 개선할 수 있다. 결합인덱스 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스 머지 VS 결합인덱스 인덱스 머지 : 단 하나의 컬럼으로 구성된 인덱스가 하나의 테이블에 두 개 이상 있었을 때 그 인덱스를 동시에 사용해 돌아가는 현상을 가리킨다.(비효율적) 결합인덱스 : 두 컬럼을 모두 결합해서 하나의 인덱스를 구성하기 때문에 프로세스가 간결하다. 인덱스 머지에 따른 비효.. 2024. 3. 12. [SQL튜닝] 인덱스 [SQL튜닝] 인덱스 주요내용 인덱스의 필요성 B*Tree 구조 인덱스 선정 절차 인덱스 생성 및 변경 시 고려할 사항 인덱스 스캔의 원리 인덱스 사용 학습목표 인덱스에 대한 이해를 바탕으로 비효율적으로 수행되는 SQL 문장을 진단할 수 있다. 인덱스를 활용하여 SQL 문장을 성능목표에 부합하도록 개선할 수 있다. 인덱스 활용을 통해 개선된 SQL 문장이 성능목표에 부합하는지 테스트할 수 있다. 인덱스의 필요성 사용자가 인덱스를 사용하는 이유 : 데이터베이스에 저장된 자료를 더욱 빠르게 조회하기 위해 인덱스를 생성하여 사용함 모든 SQL이 인덱스를 사용해야 하는가? => 일반적으로, 인덱스는 테이블의 전체 데이터 중에서 10~15% 이하의 데이터를 처리하는 경우에 효율적이며, 그 이상의 데이터를 처리할 .. 2024. 3. 11. [SQL튜닝] 옵티마이저 [SQL튜닝] 옵티마이저 주요내용 옵티마이저의 개념 옵티마이저의 종류 옵티마이저의 레벨별 설정 RBO와 CBO의 실행계획 비교 학습목표 옵티마이저 종류에 따라 달라지는 데이터베이스 성능을 모니터링할 수 있다. CBO, RBO의 실행계획 확인을 통해 SQL 문장에 적합한 옵티마이저를 선택할 수 있다. 옵티마이저의 개념 옵티마이저 : 사용자가 실행한 SQL을 해석하고, 데이터 추출을 위한 실행계획을 수립하는 프로세스 옵티마이저의 종류 RBO(Rule Based Optimizer) : 초창기 버전부터 제공함 기본적으로 15개의 순위가 매겨진 규칙이 있음 -> 이를 기초로 해서 실행계획을 수립함 SQL에 대한 실행계획이 하나 이상일 경우, 순위가 높은 규칙을 이용하게 됨 수립될 실행계획이 예측 가능하기 때문에 .. 2024. 3. 7. [SQL튜닝] 실행계획 [SQL튜닝] 실행계획 주요내용 실행계획의 정의 실행계획 확인 방법 실행계획 분석 학습목표 SQL 문장의 실행계획을 통해 데이터베이스 성능을 모니터링할 수 있다. 실행계획을 통해 비효율적으로 수행되는 SQL문장의 개선항목을 도출할 수 있다. 실행계획의 정의 실행계획 : 사용자가 SQL을 실행하여 데이터를 추출하려고 할 때, 옵티마이저가 수립하는 작업절차SELECT A.ENAME, A.DEPTNO, B.DNAME FROM EMP A, DEPT B WHERE A.DEPTNO = B.DEPTNO; OPTIMIZER : SQL해석 > 실행계획 수립 > 실행 실행계획 확인 방법 1) EXPLAIN PLAN SQL에 대한 실행계획만을 확인할 수 있음 명령을 사용할 때 데이터를 처리하지 않음EXPLAIN PLAN S.. 2024. 3. 6. [JAVA] 암호 풀기(replace, parseInt) [설명] - 알파벳 대문자로 구성된 문자열 - 알파벳 한 문자마다 # 또는 *이 일곱 개로 구성 - #*****#를 7자리의 이진수로 변환(#은 이진수 1, *은 이진수의 0으로 변환) => 1000001 - 바뀐 이진수를 10진수로 변환 => 65 - 아스키 코드로 알파벳 변환 => A [입력 예시] 4 #****###**#####**#####**##** (문자의 개수*7만큼 특수문자가 입력됨) [출력 예시] COOL 풀이 import java.util.*; class Main { public String solution(int n, String s){ String answer=""; for(int i=0; i 2024. 1. 15. [JAVA] 문자열 압축하기 [입력] 첫 줄에 문자열이 주어진다. (문자열의 길이는 100이하) [출력] 첫 줄에 압축된 문자열을 출력 [입력 예시] AABCCCCCCCD [출력 예시] A2BC7D 풀이 import java.util.*; class Main { public String solution(String s){ String answer=""; s=s+" "; int cnt=1; for(int i=0; i1){ answer+=String.valueOf(cnt); } cnt=1; } } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner sc = new Scanner(System.in); String str=sc.next().. 2024. 1. 15. [JAVA] 가장 짧은 문자거리 구하기 [입력] 첫 번째 줄에 문자열 s와 문자 t가 주어진다. (문자열과 문자는 소문자) 문자열의 길이는 100이하 [출력] 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력 [입력 예시] teachermode e [출력 예시] 1 0 1 2 1 0 1 2 2 1 0 풀이 import java.util.*; class Main { public int[] solution(String s, char t){ int[] answer=new int[s.length()]; int p=1000; for(int i=0; i=0; i--){ if(s.charAt(i)==t) p=0; else{ p++; answer[i]=Math.min(answer[i], p); } } return answer;.. 2024. 1. 15. 이전 1 2 3 4 5 6 ··· 15 다음 728x90 반응형