假设我正在开发具有单个数据库服务器和多个应用程序服务器的应用程序,该应用程序便宜且易于添加应用程序服务器,但难以扩展数据库。假设我想从数据库中检索一些需要排序的信息。除此之外,我认为应该更喜欢在应用程序服务器上进行排序,因为这会将负载从数据库转移出去,这很难扩展。在n层体系结构中对数据库服务器或应用程序服务器进行排序
现在当然也有一些案件中,排序在数据库服务器上是一个没有脑子:
- 排序是必要的,以便获得正确的结果集。例如,如果我想根据某种标准来选择最前面的N,我显然必须在我知道我想要哪些行之前进行排序。在应用程序服务器上排序不是一个选项(除非我愿意吮吸整个表,这通常不是我想要做的)。
- 有一个索引支持我的排序顺序。在这种情况下,在数据库服务器上排序基本上是免费的
但除此之外,我通常更正喜欢在应用程序服务器上排序吗?除了上面列出的情况之外,我还应该考虑一些情况吗?
数据库没有任何开发人员无法使用的排序算法,所以在没有索引的情况下排序数据(这是@Aaron特别指出的情况)并不是更高效。 – Elad 2011-05-03 14:31:15
排序比算法还要多,但我理解你的观点。我在考虑更多的是客户端而不是应用服务器端。 – datagod 2012-01-31 02:37:48