블로그 이미지
bedbmsguru

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
  • total
  • today
  • yesterday
2010. 11. 3. 11:25 SQL SERVER

exec 프로시저이름 을 하게 되면 프로시저를 batch의 중간에서도 실행가능하다.
exec가 없을경우 다른 쿼리와 함께 실행해야할 경우 문장의 제일 처음에 procedure가  와야 한다.

1.가독성을 높이기 위해 SQL키워드는  대문자로 작성한다.

2.문법은 ANSI 92에 맞춰서 작성한다

3.가능한한 변수는 적게 사용한다.
Cash를 절약할 수 있다.
4.다이나믹 SQL은 실행시 마다 다시 컴파일을 하게 되므로 적게 사용하는 것이 좋다.
Ex)     SELECT * FROM mydb.dbo.emp where empid = @ei <--다이나믹 쿼리 아님 @ei(파라미터)
    SELECT * FROM emp where empid = " + @eid <-- 다이나믹 쿼리

6.SET NOCOUNT ON 해둘것
    X개의 행이 업데이트 되었습니다 라는 결과값 출력
    추가적인 네트워크 트래픽을 발생시켜서 프로시저가 자주호출될때 성능에 영향을 끼침

7.sp_ 로 시작하도록 작성하지말것
    sp_는 시스템 저장 프로시저이기 때문에 sp_로 시작하는 프로시저는
    master디비를 조회하는 추가적 부담이 발생하고 만약 master디비에 같은 이름의
    프로시저가 있다면 이용자가 작성한 프로시저는 실행되지 않는다.

8. sp_executeSQL and the KEEPFIXED PLAN options
    다이나믹 쿼리엣 프로시저를 다시 컴파일 하지 않도록 한다.

9. 변수값을 저장할때는 하나의 select가 여러개의 set보다 낫다.
    SELECT @Var1 = @Var1 + 1, @Var2 = @Var2 - 1 <--이런식으로 사용할 것
    --안좋은 방법
    SET @Var1 = @Var1 + 1
    SET @Var2 = @Var2 - 1

10. Where 필터링시 성능순서 --> (  =, >, <, >=, <=, <>, !=, !>, !< )
    가장왼쪽이 가장 성능이 좋음

11. boolean형 비교는 in 이나 not in 보다 exists 나 not exists를 사용할것
    exist는 boolean형으로 비교하나 in은 일단 조건에 해당하는 모든값을 가져온다.

12. CONVERT 대신에 CAST를 사용하라.
    CAST가 ANSI-92표준이다. CONVERT는 MSSQL에서만 사용한다.
    Datetime에서 형식을 지정해줄때는 Convert를 사용하라 CAST로는 불가능하다.

13. 필요하지 않다면 DISTINCT나 ORDER BY를 사용하지 마라
    DBMS 퍼포먼스에 오버헤드가 발생한다.

14. CURSOR 사용은 피하라

15. SELECT 시에 필요한 칼럼만 지정하고 * 를 사용하지 마라

16. CREATE TABLE vs. SELECT INTO
    데이타가 적은 테이블에 대해서는 관계가 없지만 데이타가 많은 테이블에 대해서
    SELECT INTO 쿼리를 날리게 되면 tempdb에 에 있는 sysobjects, syscolumns, sysindexes 에 대해 Exclusive lock을 잡고    있기 때문에 tempdb의 sysobjects, syscolumns, sysindexes     를 사용해야 하는 다른쿼리들이 느려지게 된다
왜냐하면 SELECT INTO가 데이타 뿐만 아니라    테이블 스키마도 복사하기 때문이다.

17.임시테이블 대신 테이블 변수를 활용하라
    임시테이블은 프로시저를 다시 컴파일 하지만 테이블 변수는  프로시저를 다시 컴파일 하지
    않는다.

'SQL SERVER' 카테고리의 다른 글

메모리 병목현상 체크  (0) 2010.11.03
Unique Index VS Unique Constraint  (0) 2010.11.03
SQL SERVER 트리거  (0) 2010.11.03
SQL 실행계획이 다시 컴파일 되는 경우  (0) 2010.11.03
SQL2005 랭킹 함수  (0) 2010.11.03
posted by bedbmsguru