【发布时间】:2016-09-13 14:16:15
【问题描述】:
据我了解,select 不能保证总是返回相同的结果。
以下查询不保证每次都返回相同的结果:
select * from myTable offset 10000 limit 100
我的问题是,如果 myTable 在 select 执行之间没有更改(没有删除或插入),我可以依靠它每次返回相同的结果集吗?
或者换一种说法,如果我的数据库因更改而被锁定,我可以依靠 select 返回相同的结果吗?
我正在使用 postgresql。
【问题讨论】:
-
别指望它...
-
不,即使没有任何更改,您也不能依赖订单。例如Postgres 有一个称为“同步序列扫描”的功能,这意味着运行相同查询的两个用户共享相同的“序列扫描”过程,这可能会为每个查询产生不同的顺序
-
我不会依赖它。
-
为什么不直接添加订单而不用担心呢? (如果你的提议在野外落到了我的盘子里,我不会对“无论是谁干的......”都不太满意)
-
@Damien_The_Unbeliever, @jleach 我之所以要寻找答案是因为我已经执行了删除操作,只是忘记添加 order_by 子句,我正在努力解决我弄得有多乱。问题并没有说“我不想使用
ORDER_BY子句”,所以请不要做出这些假设并不公平地批评 OP。
标签: sql postgresql select sql-order-by