use*_*193 2 mysql postgresql query
据我了解,在 MySQL/Postgres 数据库中,不能保证没有 order-by 子句的 select 语句的值顺序,因此应该任意获取行。如果是这样,那么为什么在执行此类查询时通常没有重复项?
SELECT * FROM `table` LIMIT 0,5
SELECT * FROM `table` LIMIT 5,5
SELECT * FROM `table` LIMIT 10,5
Run Code Online (Sandbox Code Playgroud)
考虑到人们只关心不获取重复项而不关心排序,这些查询使用起来是否安全?如果是,那又如何?
你的语法不适用于 PostgreSQL,但我可以回答你关于 PostgreSQL 的问题:
您的查询通常会按您的预期工作,因为这三个语句通常使用相同的执行计划。但这并不能保证。
一种即使 PostgreSQL 中的顺序扫描也会返回不同顺序的可能性是,如果已经在进行表的顺序扫描:然后 PostgreSQL 将开始扫描另一个语句当前正在扫描表的位置,即中间的某个位置,所以这两个扫描可以在某种程度上同步执行以减少必要的 I/O 操作。
归档时间: |
|
查看次数: |
2433 次 |
最近记录: |