티스토리 뷰
1. SELECT 시에는 꼭 필요한 COLUMN만 조회한다.
-- BAD
SELECT *
FROM TABLE;
-- GOOD
SEELECT COLUMN1
, COLUMN2
FROM TABLE;
2. WHERE 절에는 연산을 하지 않는다.
-- BAD
SEELECT COLUMN1
, COLUMN2
FROM TABLE
WHERE FLOOR(COLUMN3) = 2;
-- GOOD
SEELECT COLUMN1
, COLUMN2
FROM TABLE
WHERE COLUMN3 = BETWEEN 4 AND 5;
3. LIKE 조회 시 와일드카드 %는 가급적 뒤에만 사용한다.
-- BAD
SEELECT COLUMN1
, COLUMN2
FROM TABLE
WHERE COLUMN3 LIKE '%DF%';
-- GOOD
SEELECT COLUMN1
, COLUMN2
FROM TABLE
WHERE COLUMN3 LIKE 'DF%';
4. SELECT DISTINCT, UNION 과 같이 중복을 제거하는 연산은 자제한다.
중복을 제거하는 연산은 시간이 많이 걸린다. DISTINCT는 원하는 컬럼에 대해서 중복을 제거하는 것이 아니라 SELECT 해온 모든 ROW에서 중복을 제거하므로 속도가 느리다. EXIST, GROUP BY를 활용하는게 좋다.
5. CHAR VS VARCHAR
4byte 이하는 CHAR, 그 이상은 VARCHAR로 선언한다.
6. BLOB VS TEXT
많은 양의 데이터 저장, 디폴트 값 지정불가 등 공통점이 있다. 차이점으로는 BOLB은 대소문자 구분, TEXT는 구분하지 않는다.
7. PRIMARY KEY, UNIQUE KEY
자동으로 인덱스가 생성된다.
8. INNER JOIN
3개 이상의 테이블을 INNER JOIN 할 때 크기가 가장 큰 테이블을 FROM절에 배치하고 INNER JOIN 절에 남은 테이블을 작은 순서대로 배치하는 것이 좋다.
9. EXPLAIN 실행 계획을 확인한다.
성능이 낮은 것 부터 높은 순으로 정렬하였다.
ALL : 테이블을 처음부터 끝까지 탐색하여 데이터를 찾음 (TABLE FULL SCAN)
INDEX : 인덱스를 처음부터 끝까지 탐색하여 데이터를 찾는 방식 (INDEX FULL SCAN)
RANGE : 특정 범위 내에서 인덱스를 사용하여 원하는 데이터를 추출, 데이터가 방대하지 않다면 준수함. (INDEX RANGE SCAN)
REF : 조인 할 때 PRIMARY KEY 혹은 UNIQUE Key 가 아닌 KEY로 매칭한 경우
EQ_REF : 조인 할 때 PRIMARY KEY로 매칭
'데이터베이스 > SQL' 카테고리의 다른 글
[오라클] ORA-01795 IN 절에 사용가능한 값의 개수 제한 (0) | 2023.09.19 |
---|---|
[SQL] MySQL EXPLAIN 실행 계획 (0) | 2022.11.03 |
[SQL] MySQL DB Connection 확인 (0) | 2022.11.03 |
[SQL] NOT NULL, DEFAULT 비교 (0) | 2022.08.31 |
[SQL] MySQL INSERT 중복(Duplicate) 처리 방법 (0) | 2022.08.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
- 개발환경
- 자바스크립트
- Eclipse
- 회고
- Linux 명령어
- SQL
- spring
- 소프트웨어공학
- 자바
- 리액트 16
- 제주도 여행
- Maven
- 오라클 내장 함수
- sort algorithm
- 프로그래머스
- 제주도 3박4일 일정
- React
- effective java
- Tomcat
- 리액트
- 경력관리
- Collection
- 오라클
- javascript
- 리눅스 명령어
- 이직
- 정렬 알고리즘
- 프로그래머
- Java
- 성능분석
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
글 보관함