테이블의 단일 열에 인덱스가 정의되어 있습니다. 인덱스가 한 열에 존재하는지 여부를 확인하려면 다음 쿼리를 사용하고 있습니다. 이것은 작동하는 것 같지만 이것을 수행하는 더 좋은 방법이 있습니까? stackoverflow에 다른 솔루션을 보았지만 잘 작동하지 않는 것 같습니다.인덱스가 테이블 열에 있는지 확인하십시오.
SELECT MIN(ColumnsCount) FROM
(
SELECT COUNT(*) AS ColumnsCount,
SysIndex.name
FROM sys.indexes As SysIndex
Inner Join sys.index_columns As SysIndexCol On SysIndex.object_id = SysIndexCol.object_id And SysIndex.index_id = SysIndexCol.index_id
Inner Join sys.columns As SysCols On SysIndexCol.column_id = SysCols.column_id And SysIndexCol.object_id = SysCols.object_id
WHERE SysIndex.name
in
(
Select
SysIndex.name
From
sys.indexes As SysIndex
Inner Join sys.index_columns As SysIndexCol On SysIndex.object_id = SysIndexCol.object_id And SysIndex.index_id = SysIndexCol.index_id
Inner Join sys.columns As SysCols On SysIndexCol.column_id = SysCols.column_id And SysIndexCol.object_id = SysCols.object_id
Where
type <> 0
And SysIndex.object_id in (Select systbl.object_id from sys.tables as systbl Where SysTbl.name = 'TableName')
And SysCols.name = 'ColName'
)
GROUP BY SysIndex.name) A
감사를 직접 아래와 같은
sys.indexes
테이블을 조회 할 수 있습니다 (색인 이름idx123
을 가정하고 테이블 이름은table1
입니다). 내 쿼리는 작동하지만 단순한 일을하기에는 너무 많은 작업이라고 생각했습니다. 더 좋은 방법이있을 거라 생각 했어. 하지만 퍼포먼스 킬러가 아니라면 아마 그걸 활용할 수있을 것입니다. – kapd