Pg数据库在线增加索引
为什么需要在线加索引
当一个表的数据存在每时每刻新增时,创建索引,需要使用在线创建索引语句,否则会创建失败或锁表。
(虽然添加了concurrently这个选项,但还是会锁表的,只是一部分一部分的锁)。
所以,最佳方案是在数据库表使用少的时候去增加索引。
举例
为字符串类型创建在线索引
CREATE INDEX concurrently idx_prp_surveyor_wtst ON cb.prp_surveyor(work_time_sys_type);为日期类型创建在线索引
CREATE INDEX concurrently idx_prp_surveyor_ad ON cb.prp_surveyor_s_arrange((arrange_date::DATE));为时间类型创建在线复合索引
CREATE INDEX concurrently idx_prp_surveyor_2fields ON cb.prp_surveyor_s_arrange((arrange_start_time::time), (arrange_end_time::time));
-为时间戳类型类型创建索引
CREATE INDEX concurrently idx_prp_car_insert_time_for_his ON cb.prp_surveyor_s_arrange((insert_time_for_his::TIMESTAMP));