gpt4 book ai didi

sql - 在 postgres 中快速检索带有 NULL 的记录

转载 作者:行者123 更新时间:2023-12-04 15:17:14 25 4
gpt4 key购买 nike

我有一个包含 200 万条记录的 postgres 数据库表和一个脚本,该脚本根据某个列为 NULL 来选择行。然后修改数据,将值存储在 NULL 列中,然后选择下一批数据进行处理。但是,以下检索具有 NULL 值的行的查询非常慢:

SELECT id, name, data_values FROM my_table WHERE data_values is NULL;
data_values 是 JSONB 类型。 data_values 当前未编入索引,但我的研究表明 postgres 索引不存储 NULL 值,因此这无济于事。
是否有加速 SELECT 查询的解决方法?在索引列中存储 bool 值?过滤索引?

最佳答案

PostgreSQL 在 B 树索引中存储 NULL 值,因此 IS NULL谓词可以使用索引。
但是,我会考虑 jsonb 上的 B 树索引仅当值很短时的列 - 长索引条目会使索引效率低下,并且超出某个特定大小,而不是太大,您将收到错误。
在这种情况下,您可以考虑使用部分索引:

CREATE INDEX ON my_table (id) WHERE data_values IS NULL;
这样的索引也可以使用,它的优点是体积小。此外,如果您修改 jsonb,则不必修改索引。 .

关于sql - 在 postgres 中快速检索带有 NULL 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64109279/

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