我试图使用btree索引创建整数列的索引,但它需要永远(超过2小时!)。 该表有17.514.879行。我没想到要花很长时间。
差不多2.5小时后,与数据库的连接就死了。当我重新连接到它时,索引就在那里,但我不知道这个索引有多好。
如何确保索引没有被连接丢失搞乱?
答案 0 :(得分:9)
通过psql
连接到数据库并运行\d table_name
(其中table_name
是您的表的名称)。例如:
grn=# \d users
Table "public.users"
Column | Type | Modifiers
--------+------------------------+-----------
name | character varying(255) |
Indexes:
"users_name_idx" btree (name)
您将看到表架构下方列出的索引。如果索引已损坏,则会将其标记为。
您可以以不锁定整个表但甚至更慢的方式创建索引。为此,您需要将CONCURRENTLY
添加到CREATE INDEX
。例如:
CREATE INDEX CONCURRENTLY users_name_idx ON users(name);
如果索引已损坏,您可以删除它并重新创建CONCURRENTLY
或使用REINDEX INDEX index_name
。例如:
REINDEX INDEX users_name_idx
将重新创建users_name_idx
。