본문 바로가기

Programming/MSSQL43

MSSQL 데이터에서 문자열 찾기 어떤 테이블에서 특정 컬럼의 데이터를 확인할 때 like '%문자열%'을 사용한다.하지만 매번 컬럼을 바꿔가면서 SELECT를 하기에는 너무 귀찮다 그래서 다음 프로시저를 만들어서 조회를 해보자 exec sp_FindStringInTable '%los%','dbo','ADDRESS' CREATE PROCEDURE sp_FindStringInTable @stringToFind VARCHAR(100), @schema sysname, @table sysname AS DECLARE @sqlCommand VARCHAR(8000) DECLARE @where VARCHAR(8000) DECLARE @columnName sysname DECLARE @cursor VARCHAR(8000) BEGIN TRY SET @sq.. 2018. 4. 17.
MSSQL TABLE REBUILD 데이터가 빈번히 삽입 삭제 수정 등이 발생하여 인덱스가 깨지거나 조각화가 일어날 경우 성능저하를 유발할 수 있다. mssql은 클러스터형 테이블과 heap 테이블로 구성되는데 클러스터형 테이블은 클러스터형 인덱스 기준으로 데이터가 순서대로 저장된다.사실은 클러스터형 인덱스도 테이블이라고 보면 쉽다. heap 테이블의 경우에는 클러스터형 인덱스가 없을 때 순서가 없이 그냥 저장되는 구조이다.이때 테이블 리빌드는 조각화가 발생했을 때 중간중간 비어있는 공간을 인지함으로써 재정렬을 통해 테이블을 새것으로 만드는 작업이라고 할 수 있다.인덱스 리빌드는 추후에 다시 포스팅할 예정이다. 간단하지만 다음 쿼리를 통해 테이블을 리빌드 해주자. select 'ALTER TABLE ' + object_name(a.obje.. 2018. 4. 16.
MSSQL 파일그룹, 할당 용량, 현재 사용중인 용량, 사용 가능한 용량 조회 DB 서버의 디스크가 빵빵하다면 문제가 안되겠지만 언젠가는 증설을 해줘야할 때가 온다.다음의 쿼리를 활용해서 현재 남은 용량을 파악하고 디스크 증설 사이즈를 예측해야 한다.대충 몇달동안 이 정도의 데이터를 쌓았고 용량이 이정도이니까 앞으로 얼마나 버틸 수 있겠군..음.. SELECT b.groupname AS 'File Group' , Name , [Filename] , CONVERT (Decimal(15,2),ROUND(a.Size/128.000,2)) [Currently Allocated Space (MB)] , CONVERT (Decimal(15,2) , ROUND(FILEPROPERTY(a.Name,'SpaceUsed')/128.000,2)) AS [Space Used (MB)] , CONVERT.. 2018. 4. 16.
MSSQL 테이블 인덱스, 인덱스 사이즈, row count 조회 DB에서 대량의 데이터를 다룰 때 사실 테이블 사이즈만 볼 것이 아니라 인덱스도 같이 봐줘야 한다.인덱스도 엄연히 테이블처럼 크기를 차지하니까.. 어떠한 경우든 배보다 배꼽이 더 크면 안되지 않을까? mssql에서 파일그룹 내 테이블 인덱스와 사이즈, row count 조회하는 쿼리는 다음과 같다. select ds.name, object_name(o.object_id) as table_name, isnull(i.name,'HEAP') as index_name, i.type_desc , convert(numeric(15,1),sum(reserved_page_count)*8./1024/1024) as reserved_size_gb , max(row_count) as row_count from sys.dm_.. 2018. 4. 16.