반응형
Index
index = 원하는 컬럼을 빠르게 찾을 수 있게 만들어진 데이터 구조
인덱스는 primary key 혹은 unique 제한규칙에 의해 자동적으로 생성되기도 함
인덱스는 고유인덱스와 비고유인덱스로 나뉨
UNIQUE INDEX = 고유인덱스는 중복이 안되는 컬럼에 고유인덱스를 정의함
BITMAP INDEX = 중복이 되는 값을 소지한 컬럼은 비고유인덱스로 정의
--------------------------------------------------------------------------------
--INDEX
--INDEX는 PRIMARY KEY, NIQUE 제약 조건에서 자동으로 샛어되고, 조회르 빠르게 해주는 HINT역할을 합니다.
--INDEX종류로는 고유, 비고유 인덱스가 있다.
--유닠크 컬럼에는 UNIQUE인덱스, 일반 컬럼에는 UNIQUE를 생략하고 지정할 수 있다
--INDEX는 조회를 빠르게하지만, 무작위하게 많은 인덱스를 생성해서 사용하면 오히려 성능부하를 일으킬 수 있다
--그래서 최후의 수단으로 INDEX를 사용하는것이 올바른 사용방법
--테이블생성
CREATE TABLE emps2 AS (SELECT * FROM employees);
select * from emps2 WHERE first_name = 'Nancy';
--인덱스 생성
CREATE INDEX emps2_firstname_idx ON emps2(first_name);
select * from emps2 WHERE first_name = 'Nancy';
--인덱스 삭제(테이블에 영향을 미치지 않음)
DROP INDEX emps2_firstname_idx;
select * from emps2 WHERE first_name = 'Nancy';
--결합 인덱스(컬럼 2개 이상)
CREATE INDEX emps2_name_idx
ON EMPS2 (first_name, last_name);
SELECT * FROM emps2 WHERE first_name = 'Nancy'; -- 이렇게 해도 인덱스 힌트가 들어감
SELECT * FROM emps2 WHERE first_name = 'Nancy' AND last_name = 'JJ';
--------------------------------------------------------------------------------
--힌트구문
SELECT /*+ INDEX(emps2 emps2_name_idx) */
employee_id, salary FROM emps2;
--힌트구문
SELECT *
FROM (SELECT rownum as rn ,
A.*
FROM ( SELECT *
FROM emps2
ORDER BY first_name DESC ) A
)
WHERE rn > 10 and rn <= 20;
----------------
--힌트 거꾸로
select *
from(SELECT /*+ INDEX_DESC(emps2 emps2_name_idx)*/
rownum as rn,
employee_id,
salary
FROM emps2
ORDER BY first_name DESC )
WHERE rn>10 AND rn<=20;
-----------------------------------------------------------
사용자 계정 생성
CREATE USER 유저명
IDENTIFIED BY 비밀번호
반응형
'SQL' 카테고리의 다른 글
43일차 22.11.21 (0) | 2022.11.21 |
---|---|
42일차 22.11.18 (0) | 2022.11.18 |
40일차 22.11.16 (0) | 2022.11.16 |
39일차 22.11.15 (0) | 2022.11.15 |
38일차 22.11.14 (0) | 2022.11.15 |
댓글