Sql server 获取子查询的计数
我希望得到子查询的计数,或者至少是一种绕过它的方法 我有一个存储过程,稍后在其中创建一个临时表,但我需要该临时表中返回的行数 我获取临时表的方法是通过一个带有几个连接的select。有没有办法获取select语句中返回的行数 我有一些类似于:Sql server 获取子查询的计数,sql-server,select,count,Sql Server,Select,Count,我希望得到子查询的计数,或者至少是一种绕过它的方法 我有一个存储过程,稍后在其中创建一个临时表,但我需要该临时表中返回的行数 我获取临时表的方法是通过一个带有几个连接的select。有没有办法获取select语句中返回的行数 我有一些类似于: SELECT Book.Title, Book.Year, BookGenre.Genre FROM Book JOIN BookGenre ON Book.BookNum = BookGenre.BookNum WH
SELECT Book.Title,
Book.Year,
BookGenre.Genre
FROM Book
JOIN BookGenre ON Book.BookNum = BookGenre.BookNum
WHERE Book.Title IS NOT NULL
在此之前,我需要获取从该查询返回的行数。因此,基本上:
COUNT(SELECT Book.Title,
Book.Year,
BookGenre.Genre
FROM Book
JOIN BookGenre ON Book.BookNum = BookGenre.BookNum
WHERE Book.Title IS NOT NULL)
@@RowCount
在选择之后,将立即给出返回的行数
您可以获取计数,然后重复查询,或者执行查询并获取计数。如果需要在进一步处理数据之前使用计数,则可以将查询结果定向到临时表或表变量
在某些情况下,运行查询可能会有所帮助,但只保存以后检索完整数据所需的id。你的例子似乎不属于这种情况
完整性:
非规范化是另一种选择。例如,您可以使用触发器在bookquare
表中维护每种体裁中的图书数量计数
如果查询代价高昂、重复,并且您可以容忍一定程度的陈旧数据,那么维护结果缓存是另一种可能性。例如,网站主页上的前十名列表不需要精确无误。每5分钟运行一次查询可能足以保持货币幻觉
小心避免过早优化。在开始研究优化之前,您应该有一个特定的、可测量的性能问题。@@RowCount
在选择之后,将立即给出返回的行数
您可以获取计数,然后重复查询,或者执行查询并获取计数。如果需要在进一步处理数据之前使用计数,则可以将查询结果定向到临时表或表变量
在某些情况下,运行查询可能会有所帮助,但只保存以后检索完整数据所需的id。你的例子似乎不属于这种情况
完整性:
非规范化是另一种选择。例如,您可以使用触发器在bookquare
表中维护每种体裁中的图书数量计数
如果查询代价高昂、重复,并且您可以容忍一定程度的陈旧数据,那么维护结果缓存是另一种可能性。例如,网站主页上的前十名列表不需要精确无误。每5分钟运行一次查询可能足以保持货币幻觉
小心避免过早优化。在开始研究优化之前,您应该有一个具体且可测量的性能问题。发布代码帮助:)抱歉,我添加了一些代码作为示例。发布代码帮助:)抱歉,我添加了一些代码作为示例。