분류 전체보기 111

MYSQL SELECT 튜닝

인데스 칼럼의 변형 제거하기 다음처럼 WHERE 조건에서 인덱스 칼럼 값에 변형이 가해진 경우는 인덱스를 사용하지 못해 비효율적입니다. 인덱스 칼럼에 변형을 제거해주어야 합니다. [튜닝 전] SELECT A, B, C FROM T WHERE PK1/100 = 1; [튜닝 후] SELECT A, B, C WHERE PK1 BETWEEN 100 AND 199; 다음은 WHERE 조건에서 인덱스 칼럼 2개를 합쳐서 사용한 경우입니다. 이도 마찬가지로 인덱스 칼럼에 변형이 가해졌기 때문에 인덱스를 사용하지 못해 비효율적입니다. [튜닝 전] SELECT A, B, C FROM TABLE WHERE CONCAT(A,B) = '202107'; [튜닝 후] SELECT A, B, C FROM TABLE A = '202..

DB/SQL 2021.10.10

MySQL 데이터 타입 Data Types

숫자 Numeric Data Types DataType 범위 BIT 1 to 64 2^6 TINYINT -128 to 127. 2^7 BOOL, BOOLEAN 0 은 true, 0이 아니면 false SMALLINT -32768 to 32767. 2^16 MEDIUMINT -8388608 to 8388607. 2^24 INT -2147483648 to 2147483647. 2^32 BIGINT -9223372036854775808 to 9223372036854775807. 2^64 DECIMAL(M,D) M인 자연수, D는 소숫점 표현으로 M은 65자리, D는 30자리까지 표현 가능 FLOAT(M,D) -3.402823466E+38 to -1.175494351E-38, 0, and 1.175494351E..

DB/SQL 2021.10.10

MYSQL 실행계획 EXPLAIN

EXPLAIN 실행계획 출력 항목 항목 설명 ID The SELECT identifier SELECT 문 실행 순서 SELECT_TYPE The SELECT type SELECT 유형 TABLE The table for the output row PARTITIONS The matching partitions 테이블 파티션을 나타내는 정보로, NULL이면 파티션 테이블이 아님. TYPE The join type 테이블의 데이터를 어떻게 찾을지에 대한 정보, 테이블 전체를 탐색하는지, 인덱스를 이용해 탐색하는 지에 대한 정보를 알 수 있음. POSSIBLE_KEYS The possible indexes to choose 사용할 수 있는 인덱스 후보군 KEY The index actually chosen 실제..

DB/SQL 2021.10.08

MYSQL 힌트

힌트 RDBMS가 효율적으로 데이터를 찾을 수 있도록 추가적인 정보를 제공하기 위한 것. 특정 인덱스를 사용하게 한다던가, 특정 조인 방식으로 유도하는 식으로 사용한다. 힌트 작성법 ① 주석 표기를 이용 SELECT COLUMNA, COLUMNB FROM TALBE /*! USE INDEX (INDEX_NAME) */ WHERE COLUMNA = 'A' ② 쿼리의 일부로 작성 SELECT COLUMNA, COLUMNB FROM TALBE USE INDEX (INDEX_NAME) WHERE COLUMNA = 'A' 힌트 사용시 주의사항 MYSQL은 힌트를 작성하더라고 옵티마이저가 힌트를 따르는 것이 비효율적이라고 생각하면 무시된다. 힌트에 사용된 오브젝트(인덱스, 함수)가 존재하지 않으면 에러가 발생한다...

DB/SQL 2021.10.07

ORACLE과 MYSQL의 차이점

구조적 차이 오라클 : DB 서버가 통합된 하나의 스토리지를 공유하는 방식 MYSQL : DB 서버마다 독립적인 스토리지를 할당하는 방식 조인 방식의 차이 오라클 : 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공함. MYSQL : 중첩 루프 조인 방식을 제공함. 확장성의 차이 오라클 : 별도의 DBMS을 설치해 사용할 수 없음 MYSQL : 별도의 DBMS을 설치해 사용할 수 있음 메모리 사용율의 차이 오라클 : 메모리 사용율이 커서 최소 수백MB 이상이 되어야 설치 가능함. MYSQL : 메모리 사용율이 낮아서 1MB 환경에서도 설치가 가능함. 파티셔닝 오라클 : Local Partion Index, Global Partion Index를 지원 MYSQL : Local Partion ind..

DB/SQL 2021.10.07

제어문(조건문 if, 반복문 for/while)

제어문 메소드는 { } 에서 위에서 아래로 흘러가며 실행된다. 이런 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 게 제어문이다. 제어문에는 조건문과 반복문이 있다. 조건문은 특정 조건을 만족할 경우 { } 내부를 실행하고 원래의 실행흐름으로 되돌아온다. 반복문은 특정 조건을 만족할 때까지 { } 내부를 반복 실행한다. 조건문 IF if 문은 조건식이 true이면 { } 내부를 실행하고, false이면 실행하지 않는다. int score = 70; String grade; if(score >= 90) { grade = "A"; } // 위의 if문 조건을 만족하지 않으면서 // 해당 조건문을 만족하면 실행한다. else if(score >= 80 ) { grade = "B"; } // 위의..

JAVA/JAVA 2021.10.07

리트코드 LeetCode Height Checker

문제 : https://leetcode.com/problems/height-checker/ Height Checker - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 : 선형시간 정렬 (계수정렬) 2021.10.05 - [알고리즘/알고리즘] - 선형시간 정렬 선형시간 정렬 계수정렬(Counting Sort) 1. 실제 숫자를 세는 방법으로 숫자가 몇 개인지를 기록한다. 가장 작은 원소와 가장 큰 원소를 구한다. 가장 작은 원소부터 가장 큰 원소까지의 실제..

선형시간 정렬

계수정렬(Counting Sort) 1. 실제 숫자를 세는 방법으로 숫자가 몇 개인지를 기록한다. 가장 작은 원소와 가장 큰 원소를 구한다. 가장 작은 원소부터 가장 큰 원소까지의 실제 숫자를 key(index)로 가지는 배열을 만든다. 배열에서 실제 숫자의 갯수를 센다. 2. 갯수를 하나씩 줄여가면서 해당 위치에 요소를 넣어준다. 의사코드 수행시간 O(N+K) * k는 입력되는 정수의 범위이다. 계수정렬이 유리한 경우 동일한 숫자가 반복되고, MIN과 MAX 값의 범위가 적을 때 JAVA 구현 package algorithm; import java.util.Arrays; public class CountingSort { public int[] countingSort(int[] arr, int min, ..

연산자 Operator

연산자의 개념 연산(Operations) : 프로그램에서 데이터를 처리하여 결과를 산출하는 것. 연산자(Operator) : 연산에 사용되는 표시나 기호 피연산자(Operand) : 연산에 사용되는 데이터 연산식(Expressions) : 연산 계산식 연산자의 종류 피연산자의 갯수에 따라 단항, 이항, 삼항 연산자로 구분됨. 연산식은 무조건 1개의 값만 반환함. 연산자의 종류에 따라 산출되는 값의 데이터타입이 다름. 산술연산자는 숫자타입(byte, short, int, long, float, double), 비교연산자와 논리연산자는 boolean 타입이 반환됨. 단항 : a++; !조건식 이항 : x + y; 삼항 : (score>90) : "A" : "B"; 연산자 종류 연산자 피연산자수 산출값 설명 ..

JAVA/JAVA 2021.10.04

프로그래머스 정수 삼각형

문제 https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 풀이 : 동적 계획법 Dynamic Programming ① 2번째 줄부터 시작 이전 단계 값들 중에 가장 큰 값과 현재 갑을 더해서 저장한다. 이전 단계 값 ( y = 현재 위치 or y = 현재위치 -1) ex) (0,1)의 이전 단계 값 : (0,0) / (1,1)의 이전단계값 : (0,0) / (2,1)의 이전단계 값 : (1,1), (1,0) ② 마지막 단계(리프노드) 값 중 최대값을 출력한다. 참조 동적계획법, 위키백과 ..