pgsql索引的使用情况

准备工作

当前新建一张表TestTable,表的数据量为八百多万

为表的ReginId字段新建索引

1 select * from pg_indexes where tablename='testtable';
2 create index testRegion on TestTable ("RegionId");

接下来查看当前表in查询是否走了索引

1、in三条数据,很明显可以看到是经过索引的

2、in多条数据,测试一下比如一万条数据,发现依然走的是索引

3、子查询嵌套子表查询,数据量少的情况一百条数据,测试发现走的索引

4、子查询嵌套子表查询,提升数据量为一千条数据七百条,发现最终走的是全表扫描

对比两次子查询嵌套子表查询数据结果:

第一次测试:子查询条件550条数据走到了索引用时0.237s,数据
第二次测试:子查询条件600条数据未使用索引,总耗时22.662s,总数据

总结:

当子查询条件in的是传来的集合数据,基本上都会走索引去查询,而当子查询嵌套的是
子表查询则会根据查询的数据数量来判断是否走索引

多表关联自我总结:

表关联是小表驱动大表,若数据量少关联的少是很快没问题

但是

1、表关联语句写起来复杂,若表结构变动则维护成本大

2、若表数据量庞大,关联表想要查询快则必须建立索引,而索引占用资源大维护成本

也高(索引并不是建的越多越好)

3、若表关联查询复杂,则压力都放在数据库上了

posted @ 2022-08-10 23:20  落幕无痕  阅读(498)  评论(0编辑  收藏  举报