- Mastering PostgreSQL 9.6
- Hans Jurgen Schonig
- 272字
- 2021-07-09 19:57:16
Making use of index only scans
So far, you have seen when an index is used and when it is not. In addition to that, bitmap scans have been discussed.
However, there is more to indexing. The following two examples will only differ slightly although the performance difference might be fairly large. Here is the first query:
test=# EXPLAIN SELECT * FROM t_test WHERE id = 34234;
QUERY PLAN
----------------------------------------------------------------
Index Scan using idx_id on t_test
(cost=0.43..8.45 rows=1 width=9)
Index Cond: (id = 34234)
There is nothing unusual here. PostgreSQL uses an index to find a single row. What happens if only a single column is selected?
test=# EXPLAIN SELECT id FROM t_test WHERE id = 34234;
QUERY PLAN
----------------------------------------------------------------
Index Only Scan using idx_id on t_test
(cost=0.43..8.45 rows=1 width=4)
Index Cond: (id = 34234)
(2 rows)
As you can see, the plan has changed from an index scan to a so called index only scan. In our example, the id column has been indexed so its content is naturally in the index. There is no need to go to the table in most cases if all the data can already be taken out of the index. Going to the table is (almost) only required if additional fields are queried, which is not the case here. Therefore, the index-only scan will promise significantly better performance than a normal index scan.
Practically, it can even make sense to include an additional column into an index here and there to enjoy the benefit of this feature. In MS SQL, adding additional columns is known as covering indexes. Similar behavior can be achieved in PostgreSQL as well.
- 零起步輕松學單片機技術(第2版)
- 機器學習實戰:基于Sophon平臺的機器學習理論與實踐
- 腦動力:Linux指令速查效率手冊
- Mastering Matplotlib 2.x
- Getting Started with Clickteam Fusion
- Learning Social Media Analytics with R
- 大數據技術與應用
- Kubernetes for Developers
- 大數據技術基礎:基于Hadoop與Spark
- 奇點將至
- 統計挖掘與機器學習:大數據預測建模和分析技術(原書第3版)
- Ansible 2 Cloud Automation Cookbook
- 項目實踐精解:C#核心技術應用開發
- MySQL Management and Administration with Navicat
- 中小型網站建設與管理