01. JDBC
optional
- 생성자가 private이여서 직접 접근 못함 → 팩토리 매소드로 접근해야한다.
- .of …으로 접근해야한다.

쿼리문 작성 주의사항
- 쿼리문에 직접 %?% 하면 안된다.

RuntimeException 예외처리 옵션 , 반드시 에러처리 안해도 된다.
이거 자체가 복사본
- get으로 가져온거 자체가 복사본이다.
- 원본은 데이터베이스
- 리스트때처럼 클론 안해도 된다.

트랜젝션
- connection 에서 해야한다.

싱글톤 패턴 만들기
- dao 인스턴스 서비스마다 만들어야하니까, 싱글톤 패턴으로 만들어야한다.
- 스프링 프레임워크로 하면 간결하게 할 수 있다

02. 오후수업
클러스터 인덱스 (Primary Index)
특정 나열된 데이터들을 일정 기준으로 정렬해주는 인덱스다.
그래서 클러스터형 인덱스 생성 시에는 데이터 페이지 전체가 다시 정렬된다.
하지만 이러한 정렬 특징 때문에, 이미 대용량의 데이터가 입력된 상태라면 클러스터형 인덱스 생성은
심각한 시스템 부하를 줄 수 있다.
한개의 테이블에 한개씩만 만들 수 있다
본래 인덱스는 생성 시 데이터들의 배열정보를 따로 저장하는 공간을 사용하나,
클러스터 인덱스는 따로 저장하는 정보 공간을 적게 사용하면서 테이블 공간 자체를 활용한다.
인덱스 자체의 리프 페이지가 곧 데이터이기 때문에 인덱스 자체에 데이터가 포함되어있다고 볼 수 있다.
보조 인덱스 보다 검색 속도는 더 빠르다. 하지만 입력/수정/삭제는 더 느리다.
MySQL에서는 Primary Key가 있다면 Primary Key를 Clustered INDEX로, 없다면 UNIQUE 하면서
NOT NULL인 컬럼을, 그것도 없으면 임의로 보이지않는 컬럼을 만들어 Clustered Index로 지정한다.
보조 인덱스 (Secondary Index)
이 인덱스는 논 클러스터 인덱스 (non-clustered index) 라고도 불린다.
개념적으로는 후보키에만 부여 할 수 있는 인덱스다.
(후보키 : 고유 식별 번호, 주민번호 같이 각 데이터를 인식할 수 있는 최소한의 고유 식별 속성 집합)
보조 인덱스의 생성시에는 데이터 페이지는 그냥 둔 상태에서 별도의 페이지에 인덱스를 구성한다.
별도의 페이지에서 인덱스를 구성하니, 클러스터와는 달리 자동 정렬을 하지 않는다.
클러스터 인덱스의 리프 페이지는 보조 인덱스의 인덱스 자체의 리프 페이지는 데이터가 아니라 데이터가
위치하는 주소값 (RID)
클러스터형 보다 검색 속도는 더 느리지만 데이터의 입력/수정/삭제는 덜 느리다.
보조 인덱스는 여러 개 생성할 수 있다. 그러나 함부로 사용할 경우에는 오히려 성능을 떨어뜨릴 수 있다.
각 데이터에 대해서 고유 값 (unique) 들이 있는 목록에 생성 할 수 있는 인덱스다. (unique key)
INDEX를 만들어 둔다고 모든 쿼리에서 INDEX를 활용하는 것은 아니다.
WHERE SUBSTR(컬럼명, 1,4) = ‘2019’
해결 → WHERE 컬럼명 LIKE ‘2019%’
WHERE count*10=100
해결 → WHERE count=100/10
WHERE 컬럼명 = ‘20190730’
해결 → WHERE 컬럼명 = TO_DATE(‘20190730’, ‘YYYYMMDD’)
WHERE 컬럼명 != ‘10’
해결 → WHERE 컬럼명 IN(‘20’, ‘30’)
WHERE 컬럼명 LIKE ‘%2019’
해결 → or 조건 사용 WHERE 컬럼명 IN(‘102019’,‘202019’,‘302019’)
INDEX는 ORDER BY와 GROUP BY에도 영향을 끼치는데 다음과 같은 경우에는 INDEX를 타지 않는다.
ORDER BY 인덱스컬럼1, 컬럼2 : 복수의 키에 대해서 ORDER BY를 사용한 경우
WHERE 컬럼1='값' ORDER BY 인덱스 컬럼 : 연속하지 않은 컬럼에 대해 ORDER BY를 실행한 경우
ORDER BY 인덱스컬럼1 DESC, 인덱스컬럼2 ASC : DESC와 ASC를 혼합해서 사용한 경우
GROUP BY 컬럼1 ORDER BY 컬럼2 : GROUP BY와 ORDER BY의 컬럼이 다른 경우
ORDER BY ABS(컬럼) : ORDER BY 절에 다른 표현을 사용한 경우