详解sqlserver查询表索引

 更新时间:2015年09月16日 11:18:06   作者:易code  
sqlserver查询表索引,大家都知道吗

SELECT   索引名称=a.name 

,表名=c.name 

,索引字段名=d.name 

,索引字段位置=d.colid 

FROM  sysindexes  a 
JOIN  sysindexkeys  b  ON  a.id=b.id  AND  a.indid=b.indid 
JOIN  sysobjects  c  ON  b.id=c.id 
JOIN  syscolumns  d  ON  b.id=d.id  AND  b.colid=d.colid 
WHERE  a.indid  NOT IN(0,255) 
-- and  c.xtype='U'  and  c.status>0 --查所有用户表 
AND  c.name='message' --查指定表 
ORDER BY  c.name,a.name,d.name

需创建索引 例如:

根据某列判断是否有重复记录,如果该列为非主键,则创建索引

根据经常查询的列,创建索引

无须创建索引

字段内容大部分一样,例如:男,女

不要给所有的列都创建索引,这样在创建新记录时,增加维护开销时间。

Oracle 查询用户表索引

select index_name,index_type,table_name from user_indexes where table_name='表名'

 SqlServer查询一个表上的索引

SELECT 
TableId=O.[object_id],
TableName=O.Name,
IndexId=ISNULL(KC.[object_id],IDX.index_id),
IndexName=IDX.Name,
IndexType=ISNULL(KC.type_desc,'Index'),
Index_Column_id=IDXC.index_column_id,
ColumnID=C.Column_id,
ColumnName=C.Name,
Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,
[UQIQUE]=CASE WHEN IDX.is_unique=1 THEN N'√'ELSE N'' END,
Ignore_dup_key=CASE WHEN IDX.ignore_dup_key=1 THEN N'√'ELSE N'' END,
Disabled=CASE WHEN IDX.is_disabled=1 THEN N'√'ELSE N'' END,
Fill_factor=IDX.fill_factor,
Padded=CASE WHEN IDX.is_padded=1 THEN N'√'ELSE N'' END
FROM sys.indexes IDX 
INNER JOIN sys.index_columns IDXC
ON IDX.[object_id]=IDXC.[object_id]
AND IDX.index_id=IDXC.index_id
LEFT JOIN sys.key_constraints KC
ON IDX.[object_id]=KC.[parent_object_id]
AND IDX.index_id=KC.unique_index_id
INNER JOIN sys.objects O
ON O.[object_id]=IDX.[object_id]
INNER JOIN sys.columns C
ON O.[object_id]=C.[object_id]
AND O.type='U'
AND O.is_ms_shipped=0
AND IDXC.Column_id=C.Column_id where O.name='cz201' --cz201是你要查询的表

以上内容就是本文全部所述,希望大家喜欢。

相关文章

  • sqlserver 给表添加索引的操作方法

    sqlserver 给表添加索引的操作方法

    索引利用数据结构和搜索算法,在数据库中加快数据的查找和访问速度,通过创建映射关系、有序排列和快速定位来提供高效的数据检索机制,通过选择适当的索引和优化查询,可以提高数据库的性能和效率,本文介绍sqlserver 如何给表添加索引,一起看看吧
    2023-10-10
  • SQL Server 总结复习(一)

    SQL Server 总结复习(一)

    写这篇文章,主要是总结最近学到的一些新知识,这些特性不一定是SQLSERVER最新版才有,大多数是2008新特性,有些甚至是更早。如果有不懂的地方,建议大家去百度谷歌搜搜,本文不做详细阐述,有错误的地方,欢迎大家批评指正
    2012-08-08
  • SQL Server数据库开发的二十一条法则

    SQL Server数据库开发的二十一条法则

    如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。
    2010-06-06
  • 用SQL语句实现替换字符串

    用SQL语句实现替换字符串

    这样可以方便我们直接在数据库中替换字符
    2008-07-07
  • 全国省市区县最全最新数据表(数据来源谷歌)

    全国省市区县最全最新数据表(数据来源谷歌)

    因为工作项目需求,需要一个城市县区数据表,上网搜了下,基本都不全,所以花了3天时间整理了一遍.
    2010-04-04
  • Windows2012配置SQLServer2014AlwaysOn的图解

    Windows2012配置SQLServer2014AlwaysOn的图解

    SQLserver 2014 AlwaysOn增强了原有的数据库镜像功能,使得先前的单一数据库故障转移变成以组(多个数据)为单位的故障转移。接下来通过本文给大家介绍Windows2012配置SQLServer2014AlwaysOn的方法,感兴趣的朋友一起学习吧
    2016-04-04
  • SQL查询某列指定长度的字符串多余的用省略号来表示

    SQL查询某列指定长度的字符串多余的用省略号来表示

    有时候为了美观,只需要显示前面几个字符串,剩下的可以用省略号来表示,下面有个不错的示例,感兴趣的朋友可以参考下
    2013-11-11
  • SQL Server通过重建方式还原master数据库

    SQL Server通过重建方式还原master数据库

    这篇文章主要为大家详细介绍了SQL Server通过重建方式还原master数据库的相关资料,需要的朋友可以参考下
    2016-09-09
  • SQLServer 触发器 数据库进行数据备份

    SQLServer 触发器 数据库进行数据备份

    首先,你需要建立测试数据表,一个用于插入数据:test3,另外一个作为备份:test3_bak
    2009-07-07
  • SQL Server清除事务日志的两种方式

    SQL Server清除事务日志的两种方式

    事务日志是一种记录每次数据库修改操作的日志,它记录了每一次事务修改的详细日志,但磁盘容量始终有限制,本文主要介绍了SQL Server清除事务日志的两种方式,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论