문법
CREATE INDEX
DROP INDEX
인덱스 작성과 삭제 과정을 정리해봤다.
sample62 no열을 가지고 isample65 인덱스 테이블 만들었다.
데이터 베이스 제품에 따라 객체의 범위가 다르다. 크게 2가지이다.
또한 복수 열을 지정 가능하다.
문법
CREATE INDEX 인덱스명 ON 테이블명(열명1, 열명2...)
isample65 인덱스 테이블을 단순히 삭제하는 것이다.
그런데 아까 데이터베이스 제품마다 범위가 다르다고 했는데 여기서도 제품마다 문법이 상이하다.
스키마 객체 경우(Oracle, DB2)
DROP INDEX isample65;
테이블 내 객체의 경우(SQL Server, MySQL)
DROP INDEX isample65 ON sample62;
제목과 마찬가지로 처리 속도가 떨어진다. 왜냐하면 최신 상태로 갱신하는 자리가 늘어나기에 다시 연산해야하기 때문이다.
WHERE 구의 조건식이 맞지 않으면, 인덱스는 사용되지 않는다.(이 부분은 헷갈려서 혹시 틀릴 경우 댓글 달아주세요)
인덱스 사용여부 확인이다.
문법
EXPLAIN SQL 명령
SQL 명령은 실제로 실행되지는 않는다.
단, MySQL인 경우 상황에 따라 일부 실행되는 경우도 발생
그럼 인덱스 사용여부에 따라 예시를 보여주면,
인덱스 사용
출처 : SQL 첫걸음 아사이 아츠시 지음 [한빛미디어] p.260
인덱스 미사용
출처 : SQL 첫걸음 아사이 아츠시 지음 [한빛미디어] p.261
인덱스 사용 여부는 서로 다른 데이터 값이 많이 존재하는가
에 달렸다
예시로 "예" "아니오" 로 구성된 열을 이진트리로 구성하면 비효율적이다.
뷰의 특징은
문법
CREATE VIEW 뷰명 AS SELECT 명령
DROP VEIW 뷰명
WHERE 구, GROUP BY 구 집계등으로 복잡한 명령을 SELECT 명령을 간략하게 표현
뷰 사용 전
SELECT * FROM (SELECT * FROM sample54) sq;
뷰 사용 후
SELECT * FROM sample_view67 sq;
문법
CREATE VIEW 뷰명 AS SELECT 명령
CREATE VIEW sample_view_67 AS SELECT SELECT * FROM sample54;
문법
CREATE VIEW 뷰명(열명1, 열명2...) AS SELECT 명령
CREATE VIEW sample_view_67(n, v, v2) AS SELECT no, a, a*2 FROM sample54;
문법
DROP VIEW 뷰명
DROP VIEW sample_view_67;
1번 약점을 보완한다.
2번 약점을 보완한다.
인수의 값에 WHERE 조건을 붙여 결과값을 바꿀 수 있음
. 출처 : SQL 첫걸음 아사이 아츠시 지음 [한빛미디어]