PHP mssql计算语句中的行

时间:2015-07-20 16:53:19

标签: php sql-server sql-server-2008 sqlsrv

我想计算查询返回的语句中的行数。我发现的唯一解决方案是:

  1. sqlsrv_num_rows()对于这样一个如此简单的任务来说,这个看起来有点太复杂了,我读到使用它会减慢执行速度
  2. 使用SELECT COUNT执行查询此方法似乎不必要,也会减慢执行速度,如果您已经有声明,为什么还要打扰另一个查询。
  3. 在生成表时计算行数由于我必须从statemnt生成一个html表,我可以在表生成循环中放置一个变量并将其递增1,但这个只在你必须遍历整个陈述。
  4. 我是否缺少一些基本的功能和/或知识,或者没有更简单的方法?

    感谢任何帮助或指导。

    编辑:返回的语句只是原始表的一小部分,因此为此目的执行另一个查询是不切实际的。

1 个答案:

答案 0 :(得分:1)

在sql server表行中,信息存储在目录视图中,动态管理视图可以用它来查找计数

此方法仅适用于物理表。因此,您可以将记录存储在一个临时表中,稍后将其删除

SELECT Sum(p.rows) 
FROM   sys.partitions AS p 
       INNER JOIN sys.tables AS t 
               ON p.[object_id] = t.[object_id] 
       INNER JOIN sys.schemas AS s 
               ON t.[schema_id] = s.[schema_id] 
WHERE  p.index_id IN ( 0, 1 ) -- heap or clustered index 
       AND t.NAME = N'tablename' 
       AND s.NAME = N'dbo'; 

有关详细信息,请查看此article

如果您不想执行其他查询,请在查询后使用select @@rowcount。它将获取先前count查询返回的select

select * from query_you_want_to_find_count 
select @@rowcount