SQL排序:服务器与客户端

时间:2010-10-27 02:53:13

标签: sql sorting performance

大多数情况下,在对某些数据进行排序时,我们有两种选择:

  1. 在SQL服务器上排序 - 使用ORDER BY子句
  2. 按客户端排序我们从数据库中获取数据
  3. 你什么时候用一个而不是为什么?

3 个答案:

答案 0 :(得分:23)

始终在SQL服务器中尽可能排序。

SQL抽象出查询数据库,排序等步骤。尽可能多地使用抽象 - 为什么要选择一堆行,然后在SQL中执行它时编写排序算法ORDER BY

另见Bill Karwin's answer

答案 1 :(得分:22)

当数据集很大时,我会在服务器上使用排序,我知道数据库中有一个索引可以帮助进行排序。如果没有索引,我会创建一个索引。

只有当数据集足够小以适应应用程序内存并且应用程序系统具有高效的排序功能,并且数据库中没有索引时,我才会在客户端上使用排序。但是如果数据集很小,即使没有索引在服务器中进行排序的成本也很容易。

答案 2 :(得分:8)

通常您希望在数据库中进行排序,它更简单,代码更少,效率更高。

但是,有一些边缘条件,基于客户端的排序是有意义的。

一个数据集,多个排序,内存中的数据集

假设您有一个查看包含500行的表的javascript gui,如果您希望为您的用户提供按他们想要的任何列排序的灵活性,那么在javascript中进行排序可能是有意义的,因此您可以减少去服务器旅行。

使用客户端排序的主要优点是减少网络流量和数据库使用(当提供多种排序时)。您必须非常小心排序性能和内存限制。大客户端的大型数据集通常是虚拟化的,因此并非所有数据都实际到达客户端。