gpt4 book ai didi

sql-server - Select WITHOUT WHERE 或 ORDER BY 子句的结果排序顺序

转载 作者:行者123 更新时间:2023-12-03 08:10:34 25 4
gpt4 key购买 nike

我有一个带有 PK 聚集索引以及其他索引的表,包括唯一的和非唯一的。如果我发出(确切地说):

SELECT * FROM table_name

或者
SELECT col1, col2 FROM table_name

将按什么顺序返回行?

这是客户转发给我们的面试问卷中的第一个问题。以下是说明:

如果此问题的答案有误,请立即终止面试!个人,无论他们声明的能力如何,都不了解基于 SQL 的关系数据库管理系统。这是过去 25 多年的 SQL-101 逻辑。正确答案是:“未知/随机/不确定,因为没有指定 ORDER BY 子句作为查询的一部分”。

我不知何故不相信这实际上是正确的。欢迎所有评论。

谢谢,

拉吉

最佳答案

即使表具有主键/聚集索引,您也无法确定行的顺序。尽管在执行计划中最后会有索引/堆扫描,但如果查询在多个核上并行执行,由于并行流合并计划步骤,结果数据集将不会被排序。

您可能不会在小型数据库上看到它,但尝试在不同的硬盘驱动器上创建一个包含许多文件的数据库,并在多核机器上运行一个简单的查询。您很可能会得到按 ID“部分排序”的结果 - 即会有块对行进行排序,但块将以半随机顺序检索。

关于sql-server - Select WITHOUT WHERE 或 ORDER BY 子句的结果排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613074/

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