전체 글
-
B-Tree 인덱스SQL 2020. 2. 12. 17:18
B-Tree란? - B-Tree는 데이터베이스의 인덱싱 알고리즘 가운데 가장 일반적으로 사용되고, 또한 가장 먼저 도입된 알고리즘 - 가장 범용적인 목적으로 사용되는 인덱스 알고리즘 - B-Tree의 B는 "Binary(이진)"의 약자가 아니라 "Balanced"를 의미 - B-Tree는 컬럼의 원래 값을 변형시키지 않고 인덱스 구조체 내에서는 항상 정렬된 상태로 유지 구조 및 특성 - 트리 구조의 최상위에 하나의 루프 노드가 존재하고 하위에 자식 노드가 붙어 있는 형태 - 트리 구조의 가장 하위에 있는 노드를 리프노드라고 부름 - 루트 노드도 리프 노드도 아닌 중간에 있는 노드를 브랜치 노드라고함 - DB에서 인덱스와 실제 저장된 데이터는 따로 관리되는데, 인덱스의 리프 노드는 항상 실제 데이터 레코드..
-
INDEX 설계SQL 2020. 2. 12. 16:52
INDEX - 소수의 데이터 조회시 유리 (응답속도가 중요할 때) - I/O 기준이 SINGLE BLOCK : 다랑의 데이터 인덱스로 접근하면 테이블 전체 조회보다 오히려 느림 - 테이블의 각 컬럼마다 인덱스가 지정되어 있으면 SELECT에는 유리할 수 있지만 데이터 삽입, 삭제, 변경시 각 컬럼마다 정렬작업이 이루어 지기 때문에 UPDATE, DELETE, INSERT 작업 시 부하가 커진다. ---> 즉, 인덱스를 하나 더 추가할 지 말지는 데이터의 저장 속도를 어디까지 희생할 수 있는지, 읽기 속도를 얼마나 더 빠르게 만들어야 하는지의 여부에 따라 결정되야한다. - INDEX를 만들지 않아도 크게 상관없으면 안만드는게 Best 그래도 만든다면 5개정도가 적정선임 - 인덱스는 B* 트리 구조이고, R..
-
INDEX와 TABLESQL 2020. 2. 11. 12:28
정의 - 정렬해놓고 색인마냥 찾아가는 개념 - 테이블의 일부 컬럼을 기준으로 데이터를 정렬한 객체 - 테이블의 ROW를 가리키는 주소를 가지고 있다. (ROWID) * ROWID는 테이블의 주소 주소를 알면 바로 접근가능 - 정렬된 인덱스의 기준으로 해당 ROW의 위치를 빠르게 검색하여 원하는 테이블의 원하는 행에 빠르게 접근 - 테이블에 데이터를 입력하면 인덱스 구조도 갱신된다. TABLE - 입력 순서대로 데이터 저장 : 비 순차적인 블록 * DELETE 등을 사용하면서 비 연속적인 블록 구성 - 대용량 테이블 엑세스 시 과도한 블록 읽기 발생 테이블 조회 방법 1. FULL TABLE SCAN -> 인덱스 없이 SELECT 절로 조회 -> 즉, 테이블 다 읽고 WHERE에 걸리는거 버리고 - > 읽..
-
시퀀스 (SESQUNE)SQL 2020. 2. 11. 11:34
SERQUENCE 정의 - 중복되지 않은 정수값을 리턴해주는 오라클 객체 왜? - 데이터에 key 컬럼은 값이 유일해야 하기 때문에 -> 유일한 값을 만드는방법 1. key table (미리 값을 정의 해둔 테이블) 2. uuid (랜덤한 32자리수의 문자열을 반환해주는 함수) 3. SEQUENCE 생성 : 생성 방법 CREATE SEQUENCE 시퀀스_이름 [OPTION ...] 1. [ORDER N] 명명규칙 SEQ_사용할 테이블명 * 일반적인 명명규칙임 시퀀스 제공 함수 - NEXTVAL : 시퀀스에 다음 값을 가져올 때 사용 한번더 실행하면 - CURRVAL : NEXTVAL를 사용하고나서 현재 읽어 들인 값을 재확인 시퀀스 결과 값을 테이블에 삽입 가능 주의점 위 사진처럼 NEXTVAL를 실행하..
-
VIEWSQL 2020. 2. 11. 10:49
VIEW view란? - VIEW = QUERY - TABLE처럼 미리 DBMS에 미리 작성한 객체 * 단, VIEW = TABLE이라고 생각하는건 잘못된 생각! 사용 목적 - 보안 목적 (특정 컬럼을 제외하고 나머지 결과만 개발자에게 제공) - 자주 사용하는 결과물의 재활용 - INLINE-VIEW를 VIEW로 생성해서 재활용 - > 쿼리단축 * INLINE-VIEW는 이름이 없기 때문에 재활용이 불가 생성 방법 CREATE [OR REPLACE] VIEW 뷰명칭 [(col1, col2. ...)] AS * OR REPLACE가 있으면 DROP하지않고 수정가능 실습 1. VIEW 생성 2. "insufficient privileges" 오류 '불충분한 권한 .. -> WHY? 말 그대로 권한이 없기 때..
-
테이블 변경SQL 2020. 2. 10. 11:43
테이블 변경 방법 1. 컬럼 추가 2. 컬럼 사이즈 변경, 타입변경 3. 기본값 설정 4. 컬럼명을 RENAME 5 . 컬럼을 삭제 6. 제약조건 추가 / 삭제 1. 컬럼 추가 방법 ALTER TALBE 테이블명 ADD (신규 컬럼명 신규 컬럼 타입) 2. 컬럼 사이즈 변경, 타입변경 - 기존에 데이터가 존재할 경우, 정상적으로 실행이 안될 확률이 매우 높음 - 일반적으로 데이터가 존재하지 않는 상태, 즉 테이블을 생성한 직후에 컬럼의 사이즈나 타입이 잘못된 경우 컬럼의 사이즈나 타입을 변경함 * 데이터가 입력된 이후로는 활요도가 매우 떨어짐 (사이즈 늘리는 것만 가능) - 사용방법 ATLER TABLE 테이블명 MODIFY(기존 컬럼명 신규 컬럼타입(사이즈)); 3. 컬럼 기본값 설정 ALTER TAB..