gpt4 book ai didi

sql - 主键排序

转载 作者:行者123 更新时间:2023-12-02 14:46:19 25 4
gpt4 key购买 nike

表本质上是按主键排序的吗?如果我有一个表,其主键位于 BigInt 标识列上,我可以相信查询将始终返回按该键排序的数据,还是我明确需要添加“ORDER BY”。性能差异显着。

最佳答案

数据通过聚集索引物理存储,该索引通常是主键,但并非必须如此。

如果没有 ORDER BY 子句,则无法保证 SQL 中的数据具有顺序。当需要数据按特定顺序排列时,应始终指定 ORDER BY 子句。如果表已经按照这种方式排序,优化器将不会做任何额外的工作,因此将其放在那里没有什么坏处。

如果没有 ORDER BY 子句,RDBMS 在等待从磁盘读入记录时可能会返回与查询匹配的缓存页面。在这种情况下,即使表上有索引,数据也可能不会按照索引的顺序进入。 (请注意,这只是一个示例 - 我不知道甚至不认为现实世界中的 RDBMS 会执行此操作,但对于 SQL 实现来说这是可接受的行为。)

编辑

如果排序时与不排序时对性能有影响,则您可能正在对没有索引(聚集索引或其他索引)的列(或列集)进行排序。鉴于它是一个时间序列,您可能会根据时间进行排序,但聚集索引位于主 bigint 上。 SQL Server 不知道两者以相同的方式增加,因此它必须采取一切措施。

如果时间列和主键列按顺序相关(当且仅当另一个列增加或保持不变时,一个列才会增加),则改为按主键排序。如果它们不以这种方式相关,请将聚集索引从主键移动到您要排序的任何列。

关于sql - 主键排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1110339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com