我在 PostgreSQL 文档中读到,如果没有 ORDER 语句,SELECT 将以未指定的顺序返回记录。
最近在一次采访中,有人问我如何按照插入的顺序 SELECT 记录,而无需 PK 或created_at 或其他可用于排序的字段。采访我的高级开发人员坚持认为,如果没有 ORDER 语句,记录将按照插入的顺序返回。
对于 PostgreSQL 来说是这样吗? MySQL 也是如此吗?或者任何其他关系型数据库管理系统?
我可以回答MySQL。我不知道 PostgreSQL 的情况。
通常,默认顺序不是插入顺序。
对于 InnoDB,默认顺序取决于查询读取索引的顺序。您可以从 EXPLAIN 计划中获取此信息。
对于 MyISAM,它按照从表中读取的顺序返回订单。这might是插入的顺序,但 MyISAM 会在删除记录后重用间隙,因此较新的行可能会更早存储。
这些都没有得到保证;这只是当前实施的副作用。 MySQL 可以在下一版本中更改实现,使结果集的默认顺序不同,而不会违反任何记录的行为。
因此,如果您需要按特定顺序排列结果,您应该使用ORDER BY
根据您的询问。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)