我正在更新一些首先运行查询的代码(我没写过),例如
SELECT COUNT(*)
FROM dbo.APP_Person as Person
WHERE Person._pk > 0
AND Person.last_name LIKE 'LName%'
AND Person.first_name LIKE 'FName%'
AND Person._pk IN (SELECT _pk FROM dbo.APP_PersonView )
如果结果计数不是太大,它稍后会运行相同的查询,但使用SELECT Person._pk代替SELECT COUNT(*)。否则,系统会告诉用户优化选择集,然后重试。
(要检查的字段和要比较的值来自用户输入。)
是否有充分的理由不简单地运行第二个表单并查看结果的大小,所以我不需要运行查询两次? SELECT COUNT(*)会比SELECT Person._pk(主键)快得多吗?
这将在SQLserver 2005或更高版本(可能是2008或更高版本)下运行。桌子相当大。
答案 0 :(得分:0)
是的,有一个很好的理由不简单地运行第二个表单并查看结果的大小:如果不扫描整个结果集,就不能得到结果的大小
您可以将结果处理为好像没有足够的数据,直到证明太多,但如果处理成本高,那么这不一定是更好的选择。除非事实证明这是您系统的瓶颈,否则您可能有更好的事情要做,而不是尝试改进它。