2009-11-07 39 views

回答

4

列數不是很重要。最重要的部分是,訂單是否匹配和索引,以及數據庫引擎是否能夠識別這些數據並正確使用索引。但是,當然有一些區別。主鍵通常比其他索引快得多,因爲其他索引之後需要進行主鍵查找,並且索引單個整數字段的效果要比索引字符串字段好得多。

關於如何構建數據庫,有幾種宗教信仰。通常,您可以通過使用整數作爲主鍵來儘量減少數據量,但企業中的許多大型數據庫在主鍵中使用多個字符串字段。這可能有幾個原因,但表現通常不是其中之一。

+0

+1順便說一下,您可能應該說在* clustered *索引上的排序是快速的。它並不總是聚集的主鍵索引。 – Andomar 2009-11-07 11:19:08

0

如果業務需求規定結果按五列進行排序,那麼假設至少有一個客戶端和一個服務器涉及到的唯一問題是在哪裏執行排序?

所以我猜想對良好實踐問題的任何答案都會有一個「取決於」的巨大劑量。

至於性能方面,如果要求進行排序,並且性能是個問題,那麼再次查看是否有可能從服務器上執行排序。

1

訂購5列或更多列不是良好實踐的問題,而是關於業務規則:您是否需要它。如果你必須排序,然後嘗試優化它。

一些常規步驟:

  1. 首先,檢查執行計劃目標數據庫。

  2. 如果性能至少「可以忍受」,那麼你就完成了。

  3. 否則:

    • 變化領域的數量在ORDER BY子句,看看它使執行計劃有什麼性能上的差異。它應該給你一些關於瓶頸的提示。
    • 嘗試通過「適當」索引來提高性能。
    • 檢查提示你的數據庫有 - 也許你可以讓查詢分析器做更好的方法。