【发布时间】:2015-07-20 16:53:18
【问题描述】:
我想计算查询返回的语句中的行数。我找到的唯一解决方案是:
- sqlsrv_num_rows() 对于这样一个简单的任务来说,这似乎有点太复杂了,我读到使用它会减慢执行速度
- 使用 SELECT COUNT 执行查询这种方法似乎没有必要,而且它会减慢执行速度,如果您已经有一条语句,为什么还要打扰另一个查询。
- 在生成表格时计算行数 因为我必须从语句中生成一个 html 表格,所以我可以在表格生成循环中放置一个变量并将其加一,但是这个只有在你已经有的时候才有效循环遍历整个语句。
我是否缺少一些基本功能和/或知识,或者没有更简单的方法?
感谢任何帮助或指导。
编辑:返回的语句只是原始表的一小部分,因此为此目的执行另一个查询是不切实际的。
【问题讨论】:
-
您能否提供显示
sqlsrv_num_rows变慢的链接?另外,在我看来,如果你想要结果和计数,使用sqlsrv_num_rows与使用select @@rowcount需要同样的努力,因为你必须使用sqlsrv_next_result然后sqlsrv_fetch(可能更多的努力)来获得计数。 -
@alalp 主要在这里:link 但我已经使用了这个 (sqlsrv_num_rows()) 方法,即使接近 200 000 行它也相当快。
-
看来游标类型是影响性能的主要原因。我只是在实时使用的表上测试(使用微时间)
sqlsrv_num_rows。在 100 次循环中,我调用了一个查询,它返回 appr。 150 行。sqlsrv_num_rows和在while循环中使用sqlsrv_fetch()递增计数器之间没有显着的时间差异。但是,在非常繁忙的服务器上可能会有所不同。
标签: php sql-server sql-server-2008 sqlsrv