mssql sqlserver 获取数据表的方法说明(sys.tables sys.sp_tables)


摘要:
下文分享 sys.sp_tables系统存储过程的应用及简介

方法1: 使用sys.tables 系统表,可以提供系统所有的表的相关信息,如下:

  select * from sys.tables 

mssql_sqlserver_sys.tables系统表

mssql_sqlserver_sys.tables系统表


方法2:使用系统存储过程sys.sp_tables 获取表、视图信息,此存储过程只返回表模式名称 限定符

  EXEC sys.sp_tables
  GO

mssql_sqlserver_sys.sp_tables表视图获取存储过程

mssql_sqlserver_sys.sp_tables表视图获取存储过程


二、sys.tables、sys.sp_tables性能对比

 
SET STATISTICS IO ON
SELECT * FROM sys.tables
GO
EXEC sys.sp_tables
GO
--------------输出---------------
(7 行受影响)
表 'syspalvalues'。扫描计数 0,逻辑读取 14 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'syssingleobjrefs'。扫描计数 0,逻辑读取 28 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sysidxstats'。扫描计数 7,逻辑读取 14 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'syspalnames'。扫描计数 0,逻辑读取 14 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sysschobjs'。扫描计数 1,逻辑读取 5 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。

(361 行受影响)
表 'sysobjrdb'。扫描计数 1,逻辑读取 29 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
表 'sysschobjs'。扫描计数 1,逻辑读取 5 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。


从以上两种方式访问的逻辑读次数,我们可以看出sys.sp_tables的效率高于sys.tables

mssql_sqlserver_sys.tables同sys.SP_tables性能对比

mssql_sqlserver_sys.tables同sys.SP_tables性能对比