2016-07-06 28 views
1

比方說,我有一個包含三列主鍵的表。如果我從該表中選擇所有,但沒有任何命令子句,據我瞭解,這些列按順序排列。第一個,第二個內部,第三個內部。依次使用主鍵的性能成本

是否有任何額外的成本,或者性能增益,通過顯式添加一個order by子句和三個按它們是主鍵一部分的列的順序?

回答

2

如果我選擇所有從該表中沒有任何ORDER BY子句他們,發生到我的理解,通過這些列

你的理解是不正確排序。如果沒有order by,數據庫引擎可能會按照它選擇的任何順序輸出結果。事實上,如果您要在另一個字段中添加聚簇索引,它可能會改變結果的順序。

是否有任何額外的費用,或者性能增益

永遠不會有通過訂購(除非你正在做的事情effects branch prediction)性能增益。如果數據庫要這樣定購,將不會有任何成本。但是,如果您未指定訂單,則可能存在正確性問題。

+0

Ahhh關於一些隱含規則的小內存似乎是在使用group by的時候,而且沒有明確的順序。 – inquam