gpt4 book ai didi

PostgreSQL:我应该更改现有索引还是创建新索引?

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

我有一个 billing_infos 表,其中有一列名为 order_id。它已经有一个索引。

\d billing_infos
...
Indexes:
"billing_infos_pkey" PRIMARY KEY, btree (id)
"billing_infos_address_id_idx" btree (address_id)
"index_billing_infos_on_order_id" btree (order_id) //<--this one

但是,我不确定这是否是唯一索引。我的任务是制作一个唯一索引,但我不确定是否应该更改已经存在的索引或创建一个新索引。 order_id 值应该都是唯一的。

我应该创建一个新索引还是更改现有索引?
我如何检查现有索引是否唯一?

最佳答案

并发创建唯一索引可能是侵入性最小的。请注意,使用 CONSTRAINT 是强制唯一性的推荐方法。如果要检查的列需要一个函数来创建唯一性,则 UNIQUE 索引更有用。后者的一个示例是使用 COALESCE() 来防止 NULL 绕过 UNIQUE 检查。例如。

create unique index foo_col1_col2_uidx on foo (col1, coalesce(col2,-1));

在上面的示例中,col2 是一个整数列,定义为 NOT NULL。

并发创建唯一索引的示例。

create unique index concurrently billing_infos_order_id_uidx on billing_infos (order_id);

来自 \dpsql 中的 UNIQUE 索引(我将我的索引命名为 _uidx)和 UNIQUE CONSTRAINT (_uc) 的输出如下所示:

\d foo
Table "public.foo"
Column | Type | Modifiers
--------+-----------------------------+-----------
x | integer |
tstamp | timestamp without time zone |
col | text |
Indexes:
"foo_col_uidx" UNIQUE, btree (col) <<< unique index
"foo_tstamp_uc" UNIQUE CONSTRAINT, btree (tstamp) <<< unique constraint
"foo_idx" btree (x)

关于PostgreSQL:我应该更改现有索引还是创建新索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837010/

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