인덱스 3

[MSSQL] 20. 미싱 인덱스 Missing Index 확인 쿼리

미싱 인덱스(Missing Index)를 조회할 때 사용하는 쿼리입니다. EqualCols는 = 조건으로 검색이 들어오는 컬럼에 대한 내용이 조회되며, InEqualCols는 범위 조건(,Between) 등으로 검색이 들어오는 컬럼에 대한 내용이 조회됩니다. AvgTotalUserCost는 해당 미싱 인덱스를 생성했을 때 SQL Server가 개선이 될 것으로 예상하는 비용인데, 높을수록(100에 가까울수록) 그 효용이 높습니다. 사이트의 상황에 따라 다르지만, AvgTotalUserCost > 10 이상인 인덱스에 대해 우선적으로 확인하고, 그 이후 10 미만의 인덱스에 대해 검토하는 것도 시간 효율성 측면에서 좋은 방법이라고 생각합니다. SELECT db.[name] AS [dbName] ,id.[o..

SQL Server 2023.05.11

[MSSQL] 7. 전체 인덱스 사용 여부 조회

sys.indexes DMV를 이용하여 각 DB별로 접속하여 조회하는 쿼리입니다. 아래 쿼리로 대략적으로 인덱스가 사용되고 있는지를 확인해볼 수 있습니다. 만약 인덱스가 불필요로 나와 삭제하려는 경우 세션 모니터링 등을 통해 삭제하려는 인덱스가 정말로 미사용 중인지 다시 한번 체크해야합니다. 그 이유는 sys.dm_db_index_usage_stats DMV가 메모리 상에만 존재하기 때문에(저장이 안되기 때문에) DB가 재기동된지 얼마 지나지 않았거나, 서버 메모리가 부족해 해당 DMV의 성능 정보가 Cached-Out되었으면 조회가 불가능하기 때문입니다. IF OBJECT_ID(N'tempdb..#DB') IS NOT NULL BEGIN DROP TABLE #DB END CREATE TABLE #DB ..

SQL Server 2023.04.14