怎么用SQL语句查询一个库里有多少表多少个索引和索引情况

idajdkaskdja 2010-11-10 01:58:35
...全文
424 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjskyooo 2010-11-11
  • 打赏
  • 举报
回复
学习 学习
振乾 2010-11-10
  • 打赏
  • 举报
回复
上面大哥说的很详细了。
主要就是 sysobjects 和sysindexes表里面的。
我给你介绍个系统函数 sp_MSforeachtable ,
也许你在以后会用到。


--查询所有的表
CREATE TABLE #temp (tablename VARCHAR(60))
INSERT #temp
exec sp_MSforeachtable @command1="select '?'"
SELECT * FROM #temp


sp_MSforeachtable
Rotel-刘志东 2010-11-10
  • 打赏
  • 举报
回复
邹建的blogs经典的。
--小F-- 2010-11-10
  • 打赏
  • 举报
回复
--查看表的索引信息
exec sp_helpindex tb

--结合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='表名'
duanzhi1984 2010-11-10
  • 打赏
  • 举报
回复
select *from sys.sysobjects  

select *from sys.sysindexes
研究下以上两个表就知道了。。
idajdkaskdja 2010-11-10
  • 打赏
  • 举报
回复
怎么用SQL语句查询一个库里有多少张表多少个索引并显示索引情况

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧