본문 바로가기

DBMS4

[RDBMS] INDEX란? 인덱스(INDEX)란? 주로 검색(SELECT) 쿼리의 수행 속도를 높이기 위해 데이터베이스의 데이터 위치를 색인하여 기억하고 있는 기술로 테이블 단위로 생성하며 오라클의 경우 PK, FK 컬럼에는 자동으로 인덱스(색인)이 생성되고 옵티마이저의 판단에 따라 사용됩니다. 책으로 생각하면 목차가 있어 어느 페이지에 어떤 내용이 있는지 확인할 수 있다면 곧바로 찾는 내용이 있는 페이지로 갈 수 있는 장점이 있다고 생각하면 됩니다. 인덱스의 사용 이유 1. 조건 검색 속도 향상 제일 큰 이유가 아닐까 싶은데 select문의 속도 이슈는 주로 조건문으로 인해 발생하고 이때 인덱스가 대안이 될 수도 있기 때문입니다. where 조건문이 있을 때 index를 타지 않으면 조건에 부합하는 데이터를 찾기 위해 테이블 전.. 2022. 8. 19.
[RDBMS] 쿼리 작성 순서와 실행 순서의 차이 정말 기본적인 내용이지만 굉장히 중요하고 잘 숙지를 못한다면 제대로 작성했는데 왜 쿼리가 실행이 안될까.. 하며 시간을 소비할 수 있는 내용이다(경험) 쿼리의 작성순서와 실제 실행되는 순서는 다르다. SQL 작성 순서 1. SELECT 컬럼명 2. FROM 테이블 3. WHERE 조건식 4. GROUP BY 컬럼명 5. HAVING 조건 6. ORDER BY 컬럼 정확히 기억이 안나지만 처음 해당 내용에 의문이 생긴건 select count(*) as cnt from user_T where cnt > 1 이런 내용의 쿼리가 실행안될때였는데 지금 생각하면 상당히 웃픈 상황이지만 작성순서대로 쿼리가 실행된다고 생각하고 나는 cnt 라고 별칭을 줬는데 왜 실행이 안될까 했었다. SQL 실행 순서 1. FROM.. 2022. 3. 1.
[ORACLE] wm_concat 과 listagg DB에서 데이터를 조회할 때 다수 튜플의 특정컬럼을 한 튜플의 특정컬럼에 모두 보여줘야 하는 경우에(group by 처럼) 사용할 수 있는함수가 wm_concat과 listagg oracle 10g : wm_concat oracle 11g : listagg 사용법은 SELECT WM_CONCAT(컬럼명) 이런 형태로 사용하면 되는데 결과값은 ','를 기준으로 한 컬럼에 표현된다. ex) T,E,S,T 물론 다른 컬럼과 같이 SELECT 할 경우 GROUP BY를 해줘야 한다. LISTAGG SELECT LISTAGG(컬럼명, 사용할 구분 기호) WITHIN GROUP(ORDER BY 정렬 기준 컬럼) 위와 같은 형태로 사용한다. 2020. 12. 4.
[ORACLE] CASE조건문 사용 시 조건 오라클 쿼리 작성시 조건을 넣기 위해 CASE문 사용시에 1 2 3 4 5 SELECT CASE WHEN ENAME ='SMITH' THEN 'SMITH씨!' ELSE 'SMITH아님' END FROM EMP; Colored by Color Scripter cs 1 2 3 4 5 SELECT CASE ENAME WHEN 'SMITH' THEN 'SMITH씨!' ELSE 'SMITH아님' END FROM EMP; cs 위, 아래 와 같은 방식으로 사용하는데 아래에 경우 비교하려는 컬럼명을 WHEN 뒤에 명시를 안해도 되는 이점이 있지만 CASE 옆에 명시한 컬럼 하나만을 비교할수있고 LIKE, IN 등의 조건식을 사용할수없다 오로지 직접비교만 가능하다! 계속 햇갈려서 기록합니다. 정확하지 않을수 있습니다... 2020. 10. 29.