时间:2016-07-06 19:14:29

标签: mysql

假设我有一个包含三列主键的表。如果我从该表中选择所有而没有任何订单子句,根据我的理解,这些列是按这些列排序的。第一个,第二个,第三个,第三个。

是否有任何额外的成本,或者可能是性能增益,通过按顺序添加order by子句,它们是主键的一部分的三个列?

1 个答案:

答案 0 :(得分:2)

  

如果我在没有任何order by子句的情况下从该表中选择了所有,那么根据我的理解,这些列是按这些列排序的

您的理解不正确。如果没有order by,数据库引擎可以按其选择的任何顺序输出结果。实际上,如果要在另一个字段上添加聚簇索引,则可能会更改结果的顺序。

  

是否有任何额外费用,或可能是性能增益

通过订购永远不会有性能提升(除非你做的事情effects branch prediction)。如果数据库要以这种方式订购,将不会产生任何费用。但是,如果您没有指定订单,则可能存在正确性问题。