假设我有一个包含三列主键的表。如果我从该表中全选而没有任何order by 子句,据我所知,它们是按这些列排序的。第一个,在第二列内,在第三列内。
通过显式添加一个 order by 子句,三列按照它们作为主键的一部分的顺序,是否有任何额外的成本,或者可能有性能提升?
最佳答案
If I select all from that table without any order by clause they are, occurring to my understanding, ordered by these columns
你的理解有误。如果没有order by
,数据库引擎可能会以它选择的任何顺序输出结果。事实上,如果您要在另一个字段上添加聚簇索引,很可能会更改结果的顺序。
Is there any additional cost, or perhaps performance gain
订购永远不会提高性能(除非您正在做 effects branch prediction 的事情)。如果数据库将以这种方式排序,则不会产生任何成本。但是,如果您未指定顺序,则可能存在正确性问题。
关于mysql - 按顺序使用主键的性能成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38232036/