Sql 基于列/表名称选择索引

Sql 基于列/表名称选择索引,sql,sql-server-2005,Sql,Sql Server 2005,是否有系统SP或dmv允许我根据列和表名选择数据库中的索引 我试图做的是删除基于字符串数据类型列的索引,因为我正在更改排序规则设置 谢谢。您可以通过查询sys.index和sys.index\u columns视图来确定给定列和/或表的索引: SELECT i.Name 'Index Name', OBJECT_NAME(i.object_ID) 'Table Name', c.Name 'Column Name' FROM sys.indexes i INN

是否有系统SP或dmv允许我根据列和表名选择数据库中的索引

我试图做的是删除基于字符串数据类型列的索引,因为我正在更改排序规则设置


谢谢。

您可以通过查询sys.index和sys.index\u columns视图来确定给定列和/或表的索引:

SELECT
    i.Name 'Index Name',
    OBJECT_NAME(i.object_ID) 'Table Name',
    c.Name 'Column Name'
FROM  
   sys.indexes i 
INNER JOIN 
   sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id
INNER JOIN
   sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id
WHERE 
  c.name = 'Index column name'      -- this for a column name
  -- OBJECT_NAME(i.OBJECT_ID) = 'Table Name'   -- this for table name

Marc

通过查询sys.index和sys.index_columns视图,始终可以确定给定列和/或表的索引:

SELECT
    i.Name 'Index Name',
    OBJECT_NAME(i.object_ID) 'Table Name',
    c.Name 'Column Name'
FROM  
   sys.indexes i 
INNER JOIN 
   sys.index_columns ic ON i.index_id = ic.index_id AND i.object_id = ic.object_id
INNER JOIN
   sys.columns c ON ic.column_id = c.column_id AND ic.object_id = c.object_id
WHERE 
  c.name = 'Index column name'      -- this for a column name
  -- OBJECT_NAME(i.OBJECT_ID) = 'Table Name'   -- this for table name

Marc

您需要四个系统视图:

sys.index、sys.index_列、sys.columns和sys.objects。sys.objects包含表sys.columns的名称。包含表的对象id和列的类型,sys.index\u列包含索引中存在的列id和索引id,sys.index包含索引id


编辑:是,不需要sys.objects。Tanks@mark.

您需要四个系统视图:

sys.index、sys.index_列、sys.columns和sys.objects。sys.objects包含表sys.columns的名称。包含表的对象id和列的类型,sys.index\u列包含索引中存在的列id和索引id,sys.index包含索引id


编辑:是,不需要sys.objects。Tanks@mark.

你可以在这篇帖子上尝试查询。。。你可以在这篇文章上尝试查询。。。