수백만 건이 되면 같은 방법이 느려질 수 있다.
“자주 찾는 값을 더 빨리 찾을 수 있는 길을 만들어 둘 수 없을까?”
책의 색인처럼 빠른 길을 만든다
인덱스(Index)
테이블의 데이터를 더 빠르게 검색할 수 있도록
특정 열을 기준으로 별도의 탐색 구조를 만들어 두는 방식이다.
검색에는 도움이 되지만 데이터를 추가하거나 수정할 때는 인덱스도 함께 관리해야 하므로 비용이 생긴다.
복잡한 조회 결과에 이름을 붙인다
관리자 화면에서 매번 여러 테이블을 JOIN해 같은 형태의 결과를 조회한다고 해 보자.
뷰(View)
하나 이상의 테이블을 조회한 결과를
마치 하나의 가상 테이블처럼 사용할 수 있게 정의한 객체다.
복잡한 조회를 단순하게 만들고, 필요한 열만 보여 주어 접근 범위를 제한하는 데도 활용할 수 있다.
SQL 안에도 절차를 만들 수 있다
여러 SQL 문을 일정한 순서로 반복해서 실행해야 한다면 데이터베이스 안에 처리 절차를 정의할 수도 있다.
프로시저호출하면 정해진 SQL 작업을 수행한다.
트리거특정 데이터 변경 사건이 발생하면 자동으로 실행된다.
함수값을 받아 계산하고 결과값을 돌려주는 형태로 사용할 수 있다.