psql创建索引与使用

最近跑了个大查询,足足跑了14w秒依旧没有跑完,于是寻找了一些优化办法:
1.提升硬件、加服务器,这种烧钱的事情,我没法子咯
2.我找到了psql有个索引的功能,这个功能在表单巨大的时候,可以极高的提速!!!

--这是它的创建、删除与修改的代码
CREATE INDEX id_index on infomation(id); --创建索引,infomation是表名
DROP INDEX IF exists id_index ;         --删除索引
ALTER INDEX public.ii RENAME TO id_index ;  --修改索引名字

如何利用索引来查询?我一开始我以为索引应该也是这样查询的,然后就是error、error、error咯

select * from id_index 

实际上索引是内置在表单的,我对它的理解是这样的,我们正常的表单是这样的,
TABEL_M

idmoney
001100
001200
002100
002300
002600

TABEL_S

idsex
0011
0022

现在我们要把这两个表单链接起来,我们一般是利用left join

SELECT TM.id, TM.money, TS.sex
FROM TABEL_M TM
left join TABEL_S TS
on TM.id = TS.id

而我们现在创建给TABLE_M创建一个索引,然后打开TABEL_M ,会看到什么,似乎变化都没有!

CREATE INDEX id_index on TABEL_M (id); --创建索引,infomation是表名

TABEL_M

idmoney
001100
001200
002100
002300
002600

只是查看表属性的时候,会发现索引栏多了一个“id_index ”的单词,这个索引的效果,就是用一个索引去将相同id标记到一个箱子中,此时的left join就相当于left join一个索引就可以left join到这一id对应的所有数组,因此实现了提速(索引会多占一份空间,这是缺陷)
TABEL_M(ii列实际上是没有的,只是为了更直观展示)

iiidmoney
1001100
001200
002100
2002300
002600

索引不仅仅只有一种,也不是只能对一个列进行,也可以组合索引,原理与此类似,不做赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值