2011-09-06 27 views
4

就内存和CPU使用情况而言,哪一个更好?在SQL Server或.NET中对结果集进行排序?在SQL Server或.NET中排序?

例如,我有一个存储过程调用csp_Products返回1000行 - 结果应按照产品名称进行排序,是它更好地使用ORDER BY条款解决这在SQL Server或者是更好的做到这一点。数据已被检索后的NET?

+2

他们(前三回复)说什么。只有100行排序(而且比386更快),它可能没有太大的区别。 –

+0

好的,但这不是问题。想象还有更多的行。 –

+1

@William没有冒犯,但如果这不是问题,那么也许你应该改变这个问题。如果100行不相关,为什么要提及它们? –

回答

2

的情况有关,但最好要做好数据库的排序,并限制量的数据返回到只有指定的查询。 不要返回比您需要的更多,并以最少量的工作处理它的格式返回它。

+0

是的谢谢,但问题不是关于返回和筛选的行数。 –

+1

你的问题是关于在服务器端或应用端进行排序。我的anwser不需要返回的行数。 –

4

如果你可以用ORDER BY条款做在SQL Server中,然后执行它。 SQL Server用于检索和操作数据,速度会更快。

如此说来,这取决于数据的类型被返回和行数可能不存在一个明显的区别。 100行真的没有那么多数据需要担心性能。

+0

我们在我们的办公室里有一个SQL Server MVP,它说在.NET中进行排序,这更好 - SQL Server的排序成本更高! –

+2

哪个SQL Server MVP是那个? –

4

我会去的SQL服务器,因为它可以使用索引(如果有任何可以利用)

4

我会补充说,如果你想知道是否(a)或(b)为更好,使用您的数据,硬件和使用模式来测试(a)和(b)彼此。虽然我同意在这种情况下你不可能发现很大的差异,但是很少有硬性规则和快速规则 - 总是有一些“取决于”因素可以将答案从(a)改变为(b),反之亦然。例如,如果您要排序的列未被索引,则有800亿行,您需要的100行不是按此排序标识的,并且您的.NET计算机的内存比SQL Server多10倍,我可能排序在客户端上。

0

至于说其他人,这是很好的做法,该数据在数据库本身进行排序,您可以通过不同的标准,并为每个组可以排序也组。它使用索引以及索引良好的数据库可以考虑性能优势之一。

说了这么多,不应该返回所有的行,并应使用自定义分页必要的筛选条件,它返回您选择的结果发现,寻呼和总无行无沿。它肯定会提升性能。