Index Scan 优化器决定利用两步的规划:最底层的规划节点访问一个索引,找出匹配索引条件的行的位置,然后上层规划节点真实地从表中抓取出那些行。独立地抓取数据行比顺序地读取开销高很多,但是因为并非全部表的页面都被访问了,这么做实际上仍然比一次顺序扫描开销要少。利用两层规划的原因是,上层规划节点在读取索引标识出来的行位置之前,会先将它们按照物理位置排序,如允许以最小化独立抓取的开销。
如果在WHERE语句中的存在多个字段上都有索引,那么优化器大概会利用索引的AND或OR的组合。
索引扫描可以分为以下几类,差异在于索引的排序机制。
Bitmap Index Scan 利用位图索引抓取数据页。
Index Scan using index_name 利用简朴索引搜索,该方式按照索引键的顺序在索引表中抓取数据。该方式最常用于在大数据量表中只抓取少量数据的情况,大概通过ORDER BY条件匹配索引顺序的查询,以减少排序时间。