Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
Tags
- 포인터
- mssql insert
- 어노테이션
- C++
- SQL
- Java
- mssql 대용량 데이터
- jdbc bulk insert
- MSSQL 인덱스
- annotation
- MSSQL
- SQL Server
- solvesql
- 테이블용량조회
- SQLite
- MS-SQL
- 윈도우함수
- jdbc
- lag
- mssql 대용량 데이터 insert
- 자바 어노테이션
- c#
- MSSQL INDEX
- select count
- sql insert
- mssql bulk insert
- 자바
- sql index
- jtds
Archives
- Today
- Total
Basic Byte Bites
[MS-SQL, SQL Server] 비효율적인(사용량이 적은) 인덱스 찾기 본문
SELECT OBJECT_NAME(i.object_id) AS TableName,
i.name AS IndexName,
user_seeks,
user_scans,
user_lookups,
user_updates
FROM sys.indexes i
LEFT JOIN sys.dm_db_index_usage_stats us
ON i.object_id = us.object_id AND i.index_id = us.index_id
WHERE OBJECTPROPERTY(i.object_id, 'IsUserTable') = 1
ORDER BY user_updates DESC;
| 컬럼명 | 의미 | 인덱스 활용 방식 |
|---|---|---|
| user_seeks | 인덱스를 사용한 시크(Seek) 연산 횟수 | 인덱스 키를 활용한 특정 행 검색 (WHERE 절의 =, IN, BETWEEN 사용 시) |
| user_scans | 인덱스를 사용한 스캔(Scan) 연산 횟수 | 전체 또는 부분 테이블 스캔 (WHERE 없이 조회 or 범위 조건) |
| user_lookups | 클러스터형 인덱스 또는 힙(Heap) 테이블에서 추가 데이터 조회한 횟수 | 비클러스터 인덱스를 통해 조회 후, 룩업 |
| user_updates | 인덱스가 업데이트(INSERT, UPDATE, DELETE)된 횟수 | 데이터 변경 시 인덱스도 같이 수정되므로 부담이 될 수 있음 |
| 지표 | 의미 | 조치 방법 |
|---|---|---|
| user_seeks ↑ | 좋은 인덱스 활용 | 유지 |
| user_scans ↑ | 전체 테이블 스캔 많음 | 필요한 경우 추가 인덱스 생성 |
| user_lookups ↑ | 추가 조회 많음 (비효율적) | INCLUDE 컬럼 추가 또는 클러스터형 인덱스 검토 |
| user_updates ↑ | 인덱스 유지 비용 큼 | 불필요한 인덱스 삭제 검토 |
'DataBase > MS_SQL' 카테고리의 다른 글
| MS-SQL 테이블 용량 조회 쿼리 (+ 간단한 설명) (0) | 2024.07.31 |
|---|---|
| SQL 행의 개수 구하기 COUNT(*) vs sys.sysindexes (0) | 2024.07.15 |