假設我正在開發具有單個數據庫服務器和多個應用程序服務器的應用程序,該應用程序便宜且易於添加應用程序服務器,但難以擴展數據庫。假設我想從數據庫中檢索一些需要排序的信息。除此之外,我認爲應該更喜歡在應用程序服務器上進行排序,因爲這會將負載從數據庫轉移出去,這很難擴展。在n層體系結構中對數據庫服務器或應用程序服務器進行排序
現在當然也有一些案件中,排序在數據庫服務器上是一個沒有腦子:
- 排序是必要的,以便獲得正確的結果集。例如,如果我想根據某種標準來選擇最前面的N,我顯然必須在我知道我想要哪些行之前進行排序。在應用程序服務器上排序不是一個選項(除非我願意吮吸整個表,這通常不是我想要做的)。
- 有一個索引支持我的排序順序。在這種情況下,在數據庫服務器上排序基本上是免費的
但除此之外,我通常更正喜歡在應用程序服務器上排序嗎?除了上面列出的情況之外,我還應該考慮一些情況嗎?
數據庫沒有任何開發人員無法使用的排序算法,所以在沒有索引的情況下排序數據(這是@Aaron特別指出的情況)並不是更高效。 – Elad 2011-05-03 14:31:15
排序比算法還要多,但我理解你的觀點。我在考慮更多的是客戶端而不是應用服務器端。 – datagod 2012-01-31 02:37:48