PostgreSQL 禁用全表扫描的实行

这篇文章主要介绍了PostgreSQL 禁用全表扫描的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。
 
PostgreSQL可以通过一些设置来禁用全表扫描(FULL SCAN/Seq Scan)
 
注意:
 
设置此功能后不是完全避免全表扫描,而是只要有不通过全表扫描能得出结果的就不走全表扫描。
 
如果什么路都不通,那肯定得全表扫描,不然怎么获取数据。
 
而且并不是不走全表扫描性能就一定好。
 
下面展示下这个功能:
 
查询表结构:
 
highgo=# \d test
    Table test
 Column |    Type    | Modifiers
————-+——————————–+———–
 G   | character varying(50)   |
 A   | character varying(12)   |
 M   | timestamp(0) without time zone |
 W   | character varying(5)   |
Indexes:
 "s__x0" btree ("G", "A", "M", "W")
 
 
 
先检查视图:
 
highgo=# select * from pg_db_role_setting ;
 setdatabase | setrole | setconfig
————-+———+———–
(0 rows)
 
 
 
查询执行计划:
 
highgo=# explain select "G","Z" from test where "G"='PG';
         QUERY PLAN        
——————————————————————————
 Seq Scan on test (cost=0.00..3.11 rows=1 width=72)
 Filter: (("G")::text = '7e'::text)
(2 rows)
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章