레이블이 시퀄인 게시물을 표시합니다. 모든 게시물 표시
레이블이 시퀄인 게시물을 표시합니다. 모든 게시물 표시

2012-09-17

DBMS/SQL]인덱스를 이용한 조건검색


인덱스란 데이터베이스에서 데이터를 빠르게 찾을 수 있게 도와주는 도구로 흔히 책의 차례에 비유된다.
인덱스의 유무에 따라서 데이터를 찾는 성능의 차이가 천차만별이 될 수도 있으나 또한 너무 남용을 하게 되면 데이터의 크기보다 인덱스의 크기가 커지는 배보다 배꼽이 더 큰경우가 발생하는 경우도 있으니 유의해서 사용을 해야된다.
인덱스는 테이블에서 어느 하나의 필드, 혹은 필드들의 조합으로 생성을 할 수 있다.
이 생성된 인덱스를 사용하게 하는 것이 쿼리 작성자의 능력이다.

이제 조건 검색에서 주의할 사항을 알아보자.

1. 조건검색시 ''='' 은 모든 인덱스검색중 최우선 순위를 가진다.
2. 조건 검색시 좌변인덱스는 가공하지 말고, 우변을 가공해서 조건을 생성할 것.
    단, 의도적인 인덱스 사용을 막고자 하는 경우는 예외.
3. 조건 검색시 부정의 표현을 사용하지 말고 긍정표현 및 범위 조건을 사용할것. 
     다시말해,  ''not'', ''<>'', ''or'' 이런 조건들은 될 수 있으면 긍정적인 표현으로 바꾸어서 사용할 것.
     ''<>'' => exists로 대체,  ''not'' A => not (A) 대체 
4. 인덱스가 있는 곳과 없는곳의 테이블을 조인하여 결과 검색시, 인덱스가 없는곳의 데이터가 먼저 읽혀지고 다음에 인덱스가 있는 테이블의 데이터가 읽혀진다.
5. 가급적 조건에 ''Null'', ''Not Null'' 을 없애기 위해 테이블 설계시, 결합인덱스의 구성컬럼이 된다면 Not Null로, 또한 입력조건값으로 자주 사용되는 것이면 Not Null로 설계를 하여서 조건검색시 Not Null, Null이란 조건을 가급적 없앤다.

2012-09-16

DBMS/MSSQL]convert()/cast()


오늘은 mssql의 convert()/cast() 함수에 대해 적어봐야지.
convert(), cast() 는 둘다 데이터를 표현할때 변환해서 보여주는 함수로 cast()는 ansi sql을 지원한다.
convert(datatype[length], expression, [style])
cast(expression as datatype)
   expression : 표현식, 테이블의 필드, 문자열 등이 올 수 있다.
   datatype : sql에서 지원하는 데이터타입을 말한다. int, char(), varchar() 등등...
   style : expression이 datetime 형식일 경우 주로 사용되는 것으로 각 나라의 표현 형식을 지정할 때 
              사용한다. 한국의 경우 주로 121, 21이 사용되는 경우가 많다.
예제) titles 테이블에서 제목과 판매일자를 가지고 온다.
SELECT SUBSTRING(title, 1, 25) AS Title, CAST(ytd_sales AS char(2))
FROM titles
WHERE type = ''trad_cook''