就内存和CPU使用情况而言,哪一个更好?在SQL Server或.NET中对结果集进行排序?在SQL Server或.NET中排序?
例如,我有一个存储过程调用csp_Products
返回1000行 - 结果应按照产品名称进行排序,是它更好地使用ORDER BY
条款解决这在SQL Server或者是更好的做到这一点。数据已被检索后的NET?
就内存和CPU使用情况而言,哪一个更好?在SQL Server或.NET中对结果集进行排序?在SQL Server或.NET中排序?
例如,我有一个存储过程调用csp_Products
返回1000行 - 结果应按照产品名称进行排序,是它更好地使用ORDER BY
条款解决这在SQL Server或者是更好的做到这一点。数据已被检索后的NET?
的情况有关,但最好要做好数据库的排序,并限制量的数据返回到只有指定的查询。 不要返回比您需要的更多,并以最少量的工作处理它的格式返回它。
是的谢谢,但问题不是关于返回和筛选的行数。 –
你的问题是关于在服务器端或应用端进行排序。我的anwser不需要返回的行数。 –
如果你可以用ORDER BY
条款做在SQL Server中,然后执行它。 SQL Server用于检索和操作数据,速度会更快。
如此说来,这取决于数据的类型被返回和行数可能不存在一个明显的区别。 100行真的没有那么多数据需要担心性能。
我们在我们的办公室里有一个SQL Server MVP,它说在.NET中进行排序,这更好 - SQL Server的排序成本更高! –
哪个SQL Server MVP是那个? –
我会去的SQL服务器,因为它可以使用索引(如果有任何可以利用)
我会补充说,如果你想知道是否(a)或(b)为更好,使用您的数据,硬件和使用模式来测试(a)和(b)彼此。虽然我同意在这种情况下你不可能发现很大的差异,但是很少有硬性规则和快速规则 - 总是有一些“取决于”因素可以将答案从(a)改变为(b),反之亦然。例如,如果您要排序的列未被索引,则有800亿行,您需要的100行不是按此排序标识的,并且您的.NET计算机的内存比SQL Server多10倍,我可能排序在客户端上。
至于说其他人,这是很好的做法,该数据在数据库本身进行排序,您可以通过不同的标准,并为每个组可以排序也组。它使用索引以及索引良好的数据库可以考虑性能优势之一。
说了这么多,不应该返回所有的行,并应使用自定义分页必要的筛选条件,它返回您选择的结果发现,寻呼和总无行无沿。它肯定会提升性能。
他们(前三回复)说什么。只有100行排序(而且比386更快),它可能没有太大的区别。 –
好的,但这不是问题。想象还有更多的行。 –
@William没有冒犯,但如果这不是问题,那么也许你应该改变这个问题。如果100行不相关,为什么要提及它们? –