类似vaccuum,PG也有一个命令叫cluster,用于按照指定索引的顺序去重建表,这样做的一个好处是避免索引扫描期间的索引查找开销
1.我们先看看table结构,这个table有一个state_idx的索引
2.再看看cluster索引之前的执行计划
explain analyze select * from bmsql_customer where c_state=‘YK’
3.尝试针对上图中使用索引state_idx 的这张表进行cluster,注意因为cluster涉及rebuild table和index,需要确保硬盘空间足够,这里我们选择按照state_idx索引的顺序table重建
4.验证table及index结构,index state_idx后面多了"cluster"
5.记住,cluster后需要分析table
6.最后看看执行计划,比cluster之前有改善
最後注意,因為cluster需要在table上获取access exclusive lock,因此不建议在业务时间进行,如此可能会阻塞进来的在这个table上query