Ale*_*vsk 4 postgresql indexing
我试图使用btree索引创建一个整数列的索引,但它需要永远(超过2小时!).该表有17.514.879行.我没想到要花那么长时间.
差不多2.5小时后,与数据库的连接就此消失了.当我重新连接到它时,索引就在那里,但我不知道这个索引有多好.
如何确保索引没有被连接丢失搞砸了?
Gre*_*vis 11
通过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)
Run Code Online (Sandbox Code Playgroud)
您将看到表模式下面列出的索引.如果索引已损坏,则会将其标记为如此.
您可以创建在不锁定整个表,但一个方法的指数甚至更慢.要做到这一点,你需要添加CONCURRENTLY到CREATE INDEX.例如:
CREATE INDEX CONCURRENTLY users_name_idx ON users(name);
Run Code Online (Sandbox Code Playgroud)
如果索引已损坏,您可以删除它并重新创建CONCURRENTLY或使用REINDEX INDEX index_name.例如:
REINDEX INDEX users_name_idx
Run Code Online (Sandbox Code Playgroud)
将重新创建users_name_idx.