퇴근5분전

작업하면서 틈틈히 정리하려고 했던 내용인데
많이는 못하고 일부만 올린다.

#####################################################################################################
## 실행계획 관련해서 찾아본 링크 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
URL : http://rdbms.tistory.com/entry/Order-By-Tuning
DISTINCT : 전체 스캔을 하여 중복된 로우를 제거 한다.
ORDER BY : 전체 스캔을 하여 해당 엑세스가 된 로우를 정렬을 한다.
 
결국 둘다 전체 스캔을 유도 하는 구문입니다.
**  무슨 수를 써던  Order By를 사용하지 않던가 Order By 대상건수를 줄이는 것이 최대 관건이다.
현실적으로 업무상 Order By를 사용하지 않을수는 없을 것이므로  **


/*실행계획 ###############################################################*/
--[Bookmark Lookup] 연산자는 책갈피(행 ID 또는 클러스터링 키)를 사용하여 테이블이나 클러스터형 인덱스에서 해당 행을 조회합니다
--[RID Lookup]은 제공된 RID(행 식별자)를 사용하여 힙을 조회하는 책갈피 조회입니다. 
--   => RID Lookup은 항상 NESTED LOOP JOIN과 함께 사용됩니다. RID Lookup은 물리 연산자입니다.
--      RID Lookup은 Heap Table에서 만 일어난다.(Unique Non-Clustered)
--[Key Lookup] 연산자는 클러스터형 인덱스가 있는 테이블의 책갈피 조회입니다.
--   => Key Lookup은 항상 Nested Loops 연산자와 함께 사용됩니다.
/*[#Tip]
글러스터드 인덱스는 리프레벨에 모든 데이터를 가지고 있기 때문에 같은 컬럼에 넌클러스트를 만드는 경우보다 더 커지게 됩니다 ^^ 룩업이 발생하지 않는다면 같은 컬럼의 클러스터드 보다 넌클러스트 인덱스가 i/o를 좀더 줄일 수도 있습니다  */

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#####################################################################################################


/*시간 ###############################################################*/
SELECT Current_Timestamp , GETDATE()

SELECT @@DATEFIRST  -- 7 : 일요일임을 뜻함

-- 현재 WEEKDAY 는 요일, WEEK는 주  곧. '2012-07-02' 는 월요일이고, 27번째주가 된다.
SELECT DATEPART( WEEKDAY, '2012-07-02' ), DATEPART( WEEK, '2012-07-02' )


-- DATEPART ? 로 검색되네?
-- http://msdn.microsoft.com/ko-kr/library/ms174420.aspx
SELECT Current_Timestamp
,  Datename(YYYY, Current_Timestamp ) -- YEAR   : YY, YYYY
,  Datename(MM, Current_Timestamp ) -- MONTH  : MM, M
,  Datename(DD, Current_Timestamp ) -- DAY   : DD, D
,  Datename(HH, Current_Timestamp ) -- HOUR   : HH
,  Datename(N, Current_Timestamp )  -- MINUTE  : MI,N
,  Datename(S, Current_Timestamp )  -- SECOND  : SS,S
,  Datename(MS, Current_Timestamp ) -- MILLISECOND : MS
,  DATEPART(YYYY, Current_Timestamp ) AS [DATEPART]  -- DATEPART로 해봄.

-- ISDATE는 CONVERT 함수와 함께 사용하고 CONVERT 스타일 매개 변수가 지정되고
-- 스타일이 0, 100, 9 또는 109가 아닌 경우에만 결정적입니다.
-- http://msdn.microsoft.com/ko-kr/library/ms187347.aspx
select ISDATE( '20120110130200'), ISDATE( '2012-01-10 13:02:00') -- 시간포멧 확인


--지정된 startdate와 enddate 간에 겹쳐지는 지정된 datepart 범위의 수(부호 있는 정수)를 반환합니다.
--http://msdn.microsoft.com/ko-kr/library/ms189794.aspx
--두 시각의 START - END = RESULT
--DATEPART( YEAR, MONTH, DAY, HOUR, MINUTE, SECOND )값에 따라 체크(분단위까지 유효!)됨.
SELECT DATEDIFF( DAY , '2012-01-11 13:01:00', Current_Timestamp )
/*시간 ###############################################################*/

 

/* 구성함수 ##########################################################*/ 

-- 요청이 들어 오는 고유한 연결의 연결 속성에 대한 정보를 반환합니다
-- http://msdn.microsoft.com/ko-kr/library/bb895240.aspx
select ConnectionProperty('local_net_address') , ConnectionProperty('local_tcp_port')

--현재 사용 중인 언어의 이름을 반환합니다.
select @@Language

--현재 서버에 설정되어 있는 decimal과 numeric 데이터 형식의 전체 자릿수 수준을 반환합니다.
select @@Max_Precision

-- 저장 프로시저가 다른 저장 프로시저를 호출하거나 CLR(공용 언어 런타임) 루틴, 유형
-- 또는 집계를 참조하여 관리 코드를 실행할 때마다 중첩 수준이 증가합니다.
-- 최대값 32를 초과하면 트랜잭션이 종료됩니다.
select @@Nestlevel

-- 서버명
select @@Servername

-- 서버sql버젼
select @@Version

-- 서비스 명
select @@Servicename

-- text 사이즈
select @@Textsize
/* 구성함수  ##########################################################*/ 

 
/*메타데이터 함수  ###################################################*/
Col_Length()
Col_Name()
Columnproperty()
Db_Id()
Db_Name()
Index_Col()
Indexkey_Property()
Indexproperty()
Typeproperty()
Object_Id()
Object_Name()
Objectproperty()
Objectpropertyex()
Sql_Variant_Property()
/*메타데이터 함수  ###################################################*/


 

'# 7) 데이타베이스 > Ms-Sql' 카테고리의 다른 글

MS-SQL] 테이블 스키마 생성 추출 쿼리.  (0) 2012.11.21
MS-SQL] SP_JS_시리즈...  (0) 2012.03.02
MS-SQL ] 1:N 관계에서 n순번 따기...  (0) 2012.03.02
[MS-SQL] 음... 잡다?  (0) 2012.01.02
MS-SQL ] default  (0) 2011.11.18