+ -
当前位置:首页 → 问答吧 → MSSQL中在表中怎么查看索引,约束所依赖的列呢?

MSSQL中在表中怎么查看索引,约束所依赖的列呢?

时间:2011-11-14

来源:互联网

如题..........

作者: tangguangqiang   发布时间: 2011-11-14

sp_helpindex

作者: OrchidCat   发布时间: 2011-11-14

SQL code
SELECT TOP 100 PERCENT --a.id, 
        CASE WHEN b.keyno = 1 THEN c.name
             ELSE ''
        END AS 表名 ,
        CASE WHEN b.keyno = 1 THEN a.name
             ELSE ''
        END AS 索引名称 ,
        d.name AS 列名 ,
        b.keyno AS 索引顺序 ,
        CASE INDEXKEY_PROPERTY(c.id, b.indid, b.keyno, 'isdescending')
          WHEN 1 THEN '降序'
          WHEN 0 THEN '升序'
        END AS 排序 ,
        CASE WHEN p.id IS NULL THEN ''
             ELSE ''
        END AS 主键 ,
        CASE INDEXPROPERTY(c.id, a.name, 'IsClustered')
          WHEN 1 THEN ''
          WHEN 0 THEN ''
        END AS 聚集 ,
        CASE INDEXPROPERTY(c.id, a.name, 'IsUnique')
          WHEN 1 THEN ''
          WHEN 0 THEN ''
        END AS 唯一 ,
        CASE WHEN e.id IS NULL THEN ''
             ELSE ''
        END AS 唯一约束 ,
        a.OrigFillFactor AS 填充因子 ,
        c.crdate AS 创建时间 ,
        c.refdate AS 更改时间
FROM    dbo.sysindexes a
        INNER JOIN dbo.sysindexkeys b ON a.id = b.id
                                         AND a.indid = b.indid
        INNER JOIN dbo.syscolumns d ON b.id = d.id
                                       AND b.colid = d.colid
        INNER JOIN dbo.sysobjects c ON a.id = c.id
                                       AND c.xtype = 'U'
        LEFT OUTER JOIN dbo.sysobjects e ON e.name = a.name
                                            AND e.xtype = 'UQ'
        LEFT OUTER JOIN dbo.sysobjects p ON p.name = a.name
                                            AND p.xtype = 'PK'
WHERE   ( OBJECTPROPERTY(a.id, N'IsUserTable') = 1 )
        AND ( OBJECTPROPERTY(a.id, N'IsMSShipped') = 0 )
        AND ( INDEXPROPERTY(a.id, a.name, 'IsAutoStatistics') = 0 )
ORDER BY c.name ,
        a.name ,
        b.keyno

作者: OrchidCat   发布时间: 2011-11-14

SQL code
--结合sys.indexes和sys.index_columns,sys.objects,sys.columns查询索引所属的表或视图的信息
select
  o.name as 表名,
  i.name as 索引名,
  c.name as 列名,
  i.type_desc as 类型描述,
  is_primary_key as 主键约束,
  is_unique_constraint as 唯一约束,
  is_disabled as 禁用
from
  sys.objects o 
inner join
  sys.indexes i
on
  i.object_id=o.object_id
inner join 
  sys.index_columns ic
on
  ic.index_id=i.index_id and ic.object_id=i.object_id
inner join
  sys.columns c
on
  ic.column_id=c.column_id and ic.object_id=c.object_id
go



--查询索引的键和列信息
select 
  o.name as 表名,
  i.name as 索引名,
  c.name as 字段编号,
from
  sysindexes i inner join sysobjects o 
on
  i.id=o.id
inner join
  sysindexkeys k 
on
  o.id=k.id and i.indid=k.indid
inner join
  syscolumns c 
on
  c.id=i.id and k.colid=c.colid
where
  o.name='表名'

作者: fredrickhu   发布时间: 2011-11-14

热门下载

更多