【问题标题】:Metadata of Getting number of rows in Views获取视图行数的元数据
【发布时间】:2019-01-08 13:08:37
【问题描述】:

为什么不能在下面的查询中使用 sys.views 返回视图中的行数,而使用 sys.table 你可以

SELECT t.NAME AS table_name,
       s.name AS owner,
       p.[Rows] as NUM_ROWS,
FROM sys.tables t INNER JOIN   
     sys.indexes i 
     ON t.OBJECT_ID = i.object_id INNER JOIN
     sys.partitions p
     ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id inner join
     sys.schemas s on s.schema_id = t.schema_id
WHERE t.NAME NOT LIKE 'dt%' AND i.OBJECT_ID > 255 AND 
      i.index_id <= 1 /* AND
            s.name in ('Schemaname1','Schemaname2') */
GROUP BY t.NAME, i.object_id, i.index_id, i.name,s.name, p.[Rows]
ORDER BY object_name(i.object_id) ;

【问题讨论】:

  • 视图只是存储代码。除非具体化,否则它们不知道视图中有多少行。
  • 带架构
  • @jarlh sql dbms
  • 你的意思是 MS SQL Server 吗?
  • @jarlh 是 MS SQL Server

标签: sql sql-server metadata


【解决方案1】:

这是您遇到的语法问题,在 NUM_ROWS 之后的查询中多了一个逗号?

SELECT t.NAME AS table_name,
       s.name AS owner,
       p.[Rows] as NUM_ROWS /*, remove this comma*/
FROM sys.tables t INNER JOIN   
     sys.indexes i 
     ON t.OBJECT_ID = i.object_id INNER JOIN
     sys.partitions p
     ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id inner join
     sys.schemas s on s.schema_id = t.schema_id
WHERE t.NAME NOT LIKE 'dt%' AND i.OBJECT_ID > 255 AND 
      i.index_id <= 1 /* AND
            s.name in ('Schemaname1','Schemaname2') */
GROUP BY t.NAME, i.object_id, i.index_id, i.name,s.name, p.[Rows]
ORDER BY object_name(i.object_id) ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 2011-10-06
    相关资源
    最近更新 更多