select distinct ft.owner_name, ft.table_name, ft.index_name, ft.column_name
from (
select s.name as owner_name, t.name as table_name, i.name as index_name, c.name as column_name
from sys.tables t
inner join sys.schemas s
on t.schema_id = s.schema_id
inner join sys.indexes i
on i.object_id = t.object_id
inner join sys.index_columns ic
on ic.object_id = t.object_id
inner join sys.columns c
on c.object_id = t.object_id
and ic.column_id = c.column_id
where i.index_id > 0
and i.type in (1, 2) -- clustered & nonclustered only
and i.is_primary_key = 0 -- do not include PK indexes
and i.is_unique_constraint = 0 -- do not include UQ
and i.is_disabled = 0
and i.is_hypothetical = 0
and ic.key_ordinal > 0
--and t.name = 'A_Table'
) as ft
* 혹은, A_Table에 있는 인덱스 확인
EXEC SP_HELPINDEX A_Table
* A_Table의 Column_01에 인덱스 생성. (인덱스명은 A_Table_INDEX_01로 할 경우)
CREATE INDEX A_Table_INDEX_01
ON A_Table(Column_01)
* A_Table의 Column_01은 항상 검색을 위해 필요하고, Column_02는 검색의 대상이 되지는 않지만, 값이 필요할 때가 있다.
* 이 경우에는 아래와 같이 INCLUDE 구문을 통해 성능을 증가시킬 수 있다.
CREATE INDEX A_Table_INDEX_01
ON A_Table(Column_01) INCLUDE (Column_02)
* A_Table의 Column_01에 있는 인덱스 A_Table_INDEX_01를 제거
DROP INDEX A_Table.A_Table_INDEX_01
너무 좋아요~! 감사합니다
답글삭제