한 번 만든 테이블은 쉽게 바꿀 수 없음
- 이미 만들어진 테이블의 열의 정의 변경, 인덱스 추가/삭제를 온라인(애플리케이션 정지 없이) 상에서 할 수 없음
- 업데이트가 모두 차단되거나 제품에 따라서는 참조조차 차단되어 버릴 수 있음
- 테이블 정의를 검토할 필요성에 직면한다면 데이터 양이 너무 커지기 전에 처리를 하는 것이 좋음
SQL 문의 실행 효율 의식하기
- 적절한 인덱스가 사용되고 있는지 확인
- WHERE 조건으로 인덱스가 걸려 있지 않은 열에 대한 검색을 하면 테이블 전체 레코드를 검색해야함
- EXPLAIN : sql 문의 실행 방식이 적절한지 여부를 실제로 실행하지 않고 판정만 해주는 기능
EXPLAIN SELECT dept.dept name FROM emp, dept, emp_dept WHERE emp_roman LIKE '%Chie%' AND emp.emp_id = emp_dept.emp_id AND emp_dept.dept_id = dept.dept_id;
rows
가 있는데 해당 필드가 몇 개의 레코드에 액세스했는지에 대한 값임. 즉 이 값이 적으면 적을수록 적은 수의 레코드에 액세스하여 결과를 반환한다는 의미로 더 빠른 쿼리라는 의미- 쿼리 분석 도구: 다양한 쿼리를 실행하는 어플리케이션을 운용해 나가다 보면 도대체 어느 쿼리가 느린가 라는 점에서 고민을 하게 됨 ⇒ 이러한 오픈 소스 지원도구가 많음
- 관리계 명령
- 초당 몇 차례의 SELECT / INSERT / UPDATE/ DELETE를 실행하고 있는가?
- 초당 몇 개의 레코드를 읽고 있는가?
- 초당 몇 차례의 무거운 쿼리가 실행되고 있는가?
SQL의 장점과 단점
- 기능면
- Stored Procedure를 이용하면 다소 복잡한 로직 구현이 가능함
- 그리고 수십개의 SQL를 한번에 호출할 수 있기에 네트워크 액세스 빈도를 크게 줄일 수 있음