在数组中排序与在SQL中排序

C.J*_*.J. 3 c# sql sql-server

我有大约1000行数据.在ASPX页面上,每当用户点击排序按钮时,它基本上会根据特定列对结果进行排序.

我建议在SQL查询中对结果进行排序,只需一个Order by子句就可以轻松得多.

但是,我的经理坚持要将结果存储在a中array,然后对数据进行排序,array因为他认为每次用户单击排序按钮时都会影响调用数据库的性能.

只是出于好奇 - 它真的重要吗?

另外,如果我们忽略行数,性能明智,哪些方法实际上更有效?

chi*_*ity 13

嗯,有三种选择:

  1. 在SQL中排序
  2. 在ASP代码中对服务器端进行排序
  3. 在您的Javascript中对客户端进行排序

我会说没有理由和(2)一起去.它是数据库中的肉和饮料,在它返回数据时进行排序:这就是数据库的设计目的.

但是(3)如果你想要一个用户可以点击的按钮,就有一个很强的理由.这意味着它都是在客户端完成的,因此您无需向Web服务器发送任何内容.如果你只有几行(这些天真的很少1000),它会感觉快得多,因为你不必等待发送请求并获得响应.

实际上,如果你有很多东西,Javascript作为一个排序机制太慢,你有太多东西无论如何都要展示它们.

简而言之,如果这是显示初始页面的一次性事情,并且您不希望用户必须与页面进行交互并对不同列等进行排序,那么请使用(1).但是如果用户想要在页面加载后对事物进行排序,那么(3)就是你的朋友.

  • 不要忽略可伸缩性,#1可能会导致您稍后重新编写应用程序,#2通常易于扩展网站,并且#3只要您将所有数据推送到客户端就可以完全扩展。 (2认同)
  • #2(和#3)可能适用于小型数据集,但不适用于大型数据集 (2认同)
  • 它实际上不是数据库排序的“肉和饮料”。这是一个非常耗费资源的操作。通常会导致 tempdb 溢出。当有人进来并详细介绍对话时,这就是我在下面的回答中试图得到的。我不是说你不应该使用 order by.... 只是有选择性。请参阅我的答案中的链接。 (2认同)