小编Mar*_*eth的帖子

各种类型的索引扫描的共享缓冲区指标代表什么?

TL;DR:当“EXPLAIN (BUFFERS)”显示“索引扫描”时,它不会显示需要从索引中读取的页数。它只是省略了那个数字,还是它实际上不读取页面(我误解了索引的工作原理)?

我们有一个大的只读表,看起来像这样:

database=> \d my_table
    Table "my_table"
        Column         |       Type       | Modifiers
-----------------------+------------------+-----------
 id                    | integer          |
 date                  | date             |
 country_id            | smallint         |
 ...other columns...
Indexes:
    "my_table_id_date_idx" btree (id, date)
Run Code Online (Sandbox Code Playgroud)

并且对该表的典型查询具有这样的 EXPLAIN...

database=> EXPLAIN (BUFFERS, ANALYZE) SELECT id, date, country_id FROM my_table WHERE id = 50 AND date BETWEEN '2015-04-01' AND '2015-04-07';
                                                                                    QUERY PLAN
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on my_table  (cost=448.40..70400.85 rows=18810 width=10) (actual time=9.011..1447.817 rows=10224 loops=1)
   Recheck Cond: ((id = 50) AND (date >= '2015-04-01'::date) AND …
Run Code Online (Sandbox Code Playgroud)

postgresql index explain postgresql-9.3

7
推荐指数
1
解决办法
580
查看次数

标签 统计

explain ×1

index ×1

postgresql ×1

postgresql-9.3 ×1