列名をインデックスの列名と一致させる方法はありますか。
たとえば、index1 が列 name,age,address を使用し、index2 が (同じテーブルで) name,age を使用するとします。(すべて 1 つの特定のテーブルに対して)
名前、年齢、およびテーブル名をストアド プロシージャに渡す場合、index1 ではなく index2 を返すクエリを作成する必要があります。
次のようなインデックスとテーブル名で列をリストする方法の例をたくさん見つけました。
テーブルにインデックスがあるかどうかを確認するにはどうすればよいですか?
しかし、私の使用法のためにSQLクエリを書くのにまだ問題がありました。
どんな助けでも大歓迎です、
ありがとうございました
(これは Microsoft sql サーバー 2008 ~ 2012 用です)
これは私が書いたものであり、適切に機能しなかったため、質問です
select index1.name,sys.tables.name, Stuff((SELECT ',' + sys.columns.name AS [text()]
FROM
(
select sys.columns.name
from sys.columns
inner join sys.index_columns On sys.index_columns.index_column_id=sys.columns.column_id
inner join sys.indexes on sys.indexes.index_id=sys.index_columns.index_id
where sys.indexes.index_id=index1.index_id
) x
For XML PATH (''), type ).value('(./text())[1]','NVARCHAR(MAX)'),1,1,'') As coLName
from sys.indexes as index1
inner join sys.tables on sys.tables.object_id=index1.object_id
inner join sys.index_columns On index1.index_id=sys.index_columns.index_id AND sys.index_columns.object_id = sys.tables.object_id
inner join sys.columns on sys.columns.column_id=sys.index_columns.column_id And sys.columns.object_id=sys.tables.object_id
where sys.tables.name=TABLE_NAME