--인덱스 생성


CREATE INDEX [INDEX NAME]

 ON [TABLE NAME](COLUMN NAME)


--인덱스 정보 확인

--인덱스명(index_name), 인덱스 설명 (index_description), 인덱스 키(index_keys)


EXEC sp_helpindex


--인덱스 정보조회 (단편화)


DBCC showcontig [TABLE NAME]


--인덱스 통계보기


DBCC show_statistics ([TABLE NAME], [INDEX NAME])


*참고

Updated : 통계가 최종 업데이트 된 날짜

Rows: 총 행수

Rows Sampled : 샘플링된 행 수 (통계 정보를 구하기 위해 샘플링된 행 수로 행 수가 많을 경우 샘플링함)

Steps : Histogram 단계수(MAX 200단계, 고유 인덱스가 아닐 경우 단계수 많아짐)

Average Key Length : 컬럼 값의 평균 길이 

All density : 밀도 (최대 1)

RANGE_HI_KEY : 각 Step에서 샘플링된 최대 값.

RANGE_ROWS : 각 Step에서 RANGE_HI_KEY값을 제외한 값의 개수.

EQ_ROWS : 최대값 개수.

DISTINCT_RANGE_ROWS : RANGE_ROWS 컬럼 값들중 중복되지 않는 값의 개수.


--인덱스 조각 모음 (*인덱스 다시 잡음, 시간걸림)


DBCC dbreindex ([TABLE NAME])


--모든 인덱스 다시 잡기 (*엄청난 시간 걸릴 수 있음. 주의!!!)


DBCC dbreindexall('[DB NAME]')


--인덱스 테이블 통계 업데이트


UPDATE STATISTICS [TABLE NAME]


참고 : https://docs.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-helpindex-transact-sql?view=sql-server-2017



[MSSQL] NUMERIC 선언 방법


NUMERIC([최대 자릿수], [소수점 아래 자릿수]) 로 

소수점 아래 자리를 선언하지 않아도 실행에는 상관 없으나 

받은 값에 소수점 아래 자리가 있을 경우 전체가 표기되지 않음


--SELECT Result : 55000

DECLARE @MONEY NUMERIC(10)


--SELECT Result : 55000.5

--DECLARE @MONEY NUMERIC(10,1)


--SELECT Result : 55000.56

--DECLARE @MONEY NUMERIC(10,2)


--SELECT Result : 55000.568

--DECLARE @MONEY NUMERIC(10,3)


SET @MONEY = '55000.568'

SELECT @MONEY


커밋되지 않은 데이터를 읽을 수 있는 수준으로

두가지 방법이 존재함.


실제로 UPDATE되지 않고 ROLLBACK될 경우 

기존데이터와 다른 값을 SELECT하게 됨


즉, 참조 무결성을 깨뜨릴 수 있다는 단점이 있으나

그럴 경우가 극히 드문 경우 자주 사용


-- 1. 해당 SELECT 문장에만 적용


SELECT * FROM [TABLE NAME] WITH (NOLOCK) WHERE ~~~



-- 2. 해당 SESSION에 모두 적용 


SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


SELECT ~~~

SET ~~~

INSERT~~~



+ Recent posts