Flaming Soccer ball
SQL

41일차 22.11.17

leo lee 2022. 11. 17.
반응형

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

댓글