gpt4 book ai didi

postgresql - 选择返回不一致的数据

转载 作者:行者123 更新时间:2023-11-29 12:12:36 25 4
gpt4 key购买 nike

这怎么可能?

insight=> select id from analysis_analysis where status != 'finished' and status != 'archived' and begin_at < '2014-07-28 17:23:27' limit 1;
id
-------
46632
(1 row)

insight=> select id from analysis_analysis where id = 46632 ;
id
----
(0 rows)

我在同一台机器/主机/服务器上同时执行这些查询。我在 2 小时内得到了相同的结果。

编辑:根据要求,这里是解释查询:

insight=> explain select id from analysis_analysis where status != 'finished' and status != 'archived' and begin_at < '2014-07-28 17:23:27' limit 1;
QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.00..4.61 rows=1 width=4)
-> Seq Scan on analysis_analysis (cost=0.00..15286.67 rows=3317 width=4)
Filter: (((status)::text <> 'finished'::text) AND ((status)::text <> 'archived'::text) AND (begin_at < '2014-07-28 17:23:27'::timestamp without time zone))
(3 rows)

insight=> explain select id from analysis_analysis where id = 46632 ;
QUERY PLAN
-----------------------------------------------------------------------------------------------------
Index Only Scan using analysis_analysis_pkey on analysis_analysis (cost=0.41..8.43 rows=1 width=4)
Index Cond: (id = 46632)
(2 rows)

编辑:

我试图重建索引,但现在又出现了另一个错误:

insight=> select id from analysis_analysis where id = 46632 ;
ERROR: tuple offset out of range: 0
insight=> select id from analysis_analysis where id = 46633 ;
id
-------
46633
(1 row)

编辑:

我(再次)重建索引,现在,查询结果为空(与最初一样)

编辑:

另一个查询:

insight=> select id from analysis_analysis where id >= 46630 and id <= 46635;
id
-------
46630
46631
46633
46634
46635
(5 rows)

最佳答案

analysis_analysis(id) 上可能有一个索引,它以某种方式损坏了,您的第一个查询没有使用它,但第二个查询使用了它,但由于数据损坏而失败。

尝试第二个查询:

SET enable_indexscan TO off;

如果不一致来自于索引,那么这次结果是正确的。

索引如何损坏?

  • postgresql 9.3.x 的早期版本有一些错误可能会导致这种情况,请查看 release notes .

  • 硬件问题。

在 SQL 中,你可以使用

REINDEX INDEX index_name;

从头开始重建它。

关于postgresql - 选择返回不一致的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25000532/

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