有没有可能 SELECT * query (no ORDER BY)
如果将相同的dbms用作元存储,是否总是相同的?
因此,只要mysql被用作元存储,那么 SELECT *;
查询将始终相同。如果使用postgres,相同数据上的顺序将始终相同,但与使用mysql时不同。我说的是同样的数据。
也许这一切都归结为一个问题:什么是默认的结果顺序,为什么mysql和postgres metastore的结果顺序不同。
有没有可能 SELECT * query (no ORDER BY)
如果将相同的dbms用作元存储,是否总是相同的?
因此,只要mysql被用作元存储,那么 SELECT *;
查询将始终相同。如果使用postgres,相同数据上的顺序将始终相同,但与使用mysql时不同。我说的是同样的数据。
也许这一切都归结为一个问题:什么是默认的结果顺序,为什么mysql和postgres metastore的结果顺序不同。
1条答案
按热度按时间smdncfj31#
没有行的默认顺序,没有
ORDER BY
订单不能保证。此事实与所使用的元存储数据库无关。一般来说,数据是由许多进程(Map器)并行读取的,在计算分割后,每个进程开始读取一些文件或几个文件,具体取决于计算的分割。所有的并行进程都可以处理不同数量的数据,并且运行在不同的节点上,每次的负载都不一样,所以根据太多的因素,比如节点负载、网络负载、每个进程的数据量等,它们在不同的时间开始返回行和结束,去除所有这些因素可以提高订单预测的准确性。也就是说,单线程顺序文件读取将以与文件中相同的顺序返回行。但这不是数据库的工作方式。
同样根据codd的关系理论,列和行的顺序对于数据库来说是无关紧要的。