검색결과 리스트
글
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. 컬럼의 가공이 있는 경우
예제1) HIREDATE는 date형
[인덱스를 타지 않음]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19980518';
[인덱스를 탐]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE HIREDATE BETWEEN TO_DATE('19980518'||'00:00:00','YYYYMMDD HH24:MI:SS')
AND TO_DATE('19980518'||'23:59:59','YYYYMMDD HH24:MI:SS')
예제2) SALARY는 number형
[인덱스를 타지 않음]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE SALARY + 1000 > 100000;
[인덱스를 탐]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE SALARY > 100000 - 1000;
2. 조건으로 NULL을 찾는 경우
SELECT LAST_NAME,FIRST_NAME
FROM EMPLOYEES
WHERE JOB IS NULL
Oracle에서는 NULL값으로 인덱스를 만들 수 없다고 한다.
(MSSQL도 그런지는 한번 찾아봐야겠다)
3. 부정형을 조건으로 쓸 경우
SELECT LAST_NAME,FIRST_NAME
FROM EMPLOYEES
WHERE JOB NOT IN ( 'INSTRUCTOR','STAFF');
부정형으로 조건을 쓸 경우 인덱스를 타지 않아 성능에 영향을 미친다.
출처 : http://www.devpia.com/DevStudy/BBS/View.aspx?s=1&type=c
예제1) HIREDATE는 date형
[인덱스를 타지 않음]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE TO_CHAR(HIREDATE,'YYYYMMDD') = '19980518';
[인덱스를 탐]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE HIREDATE BETWEEN TO_DATE('19980518'||'00:00:00','YYYYMMDD HH24:MI:SS')
AND TO_DATE('19980518'||'23:59:59','YYYYMMDD HH24:MI:SS')
예제2) SALARY는 number형
[인덱스를 타지 않음]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE SALARY + 1000 > 100000;
[인덱스를 탐]
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES
WHERE SALARY > 100000 - 1000;
2. 조건으로 NULL을 찾는 경우
SELECT LAST_NAME,FIRST_NAME
FROM EMPLOYEES
WHERE JOB IS NULL
Oracle에서는 NULL값으로 인덱스를 만들 수 없다고 한다.
(MSSQL도 그런지는 한번 찾아봐야겠다)
3. 부정형을 조건으로 쓸 경우
SELECT LAST_NAME,FIRST_NAME
FROM EMPLOYEES
WHERE JOB NOT IN ( 'INSTRUCTOR','STAFF');
부정형으로 조건을 쓸 경우 인덱스를 타지 않아 성능에 영향을 미친다.
출처 : http://www.devpia.com/DevStudy/BBS/View.aspx?s=1&type=c
'-- MSSQL' 카테고리의 다른 글
Index ReOrganize (0) | 2009.08.03 |
---|---|
DBCC SHOWCONTIG (0) | 2009.08.03 |
Oracle vs MSSQL (0) | 2009.07.10 |
특정테이블을 날렸을 때 복구방법 (0) | 2009.06.19 |
SQL Server 2000 Wait Types (0) | 2009.06.19 |
RECENT COMMENT