在 WHERE 中使用 COUNT(*) 的一些有效方法是什么

Wil*_*ins 3 performance sql-server-2008 sql-server t-sql query-performance

除了COUNT(*)使用WHERE子句调用之外,有什么方法可以使这项工作在服务器上更有效?我想对复杂的连接进行计数,只是想知道这样做的最佳方法。使用SET NOCOUNT OFF? 因为SET NOCOUNT ON在新的存储过程中默认启用,我猜是微软建议的。谢谢你。

Aar*_*and 5

SET NOCOUNT与您进行计数的能力或这样做的效率无关。此设置仅启用向客户端报告受影响的行数(例如n row(s) affected.,Management Studio 中的消息)。建议关闭的原因是因为它不必要地喋喋不休并且会破坏一些应用程序/API。

至于从复杂连接中获得更有效的计数,您的连接可能会更有效,但我们看不到它们。您也可以在不同的时间通过使用过滤索引、索引视图或在插入/更新时预先聚合自己、使用触发器等来支付该费用。有时这可以带来回报,但除了一般建议之外,还有在没有更多细节的情况下,我们无法为您提供更多信息。