- Mastering PostgreSQL 9.6
- Hans Jurgen Schonig
- 210字
- 2021-07-09 19:57:15
Deploying simple indexes
Firing up more worker processes to scan ever larger tables is sometimes not the solution. Reading entire tables to find just a single row is usually not a good idea. Therefore, it makes sense to create indexes:
test=# CREATE INDEX idx_id ON t_test (id);
CREATE INDEX
test=# SELECT * FROM t_test WHERE id = 43242;
id | name
-------+------
43242 | hans
(1 row)
Time: 0.259 ms
PostgreSQL uses Lehman-Yao's high concurrency B-tree for standard indexes. Along with some PostgreSQL specific optimizations, those trees provide end users with excellent performance. The most important thing is that Lehman-Yao allows you to run many operations (reading and writing) on the very same index at the same time, which helps to improve throughput dramatically.
However, indexes are not for free:
test=# \di+
List of relations
Schema | Name | Type | Owner | Table | Size | Description
--------+--------+-------+-------+--------+-------+-------------
public | idx_id | index | hs | t_test | 86 MB |
(1 row)
As you can see, our index containing 4 million rows will eat up 86 MB of disk space. In addition to that, writes to the table will be slower because the index has to be kept in sync all the time.
- Hands-On Deep Learning with Apache Spark
- 零起步輕松學單片機技術(第2版)
- 基于LabWindows/CVI的虛擬儀器設計與應用
- WOW!Illustrator CS6完全自學寶典
- TIBCO Spotfire:A Comprehensive Primer(Second Edition)
- 手把手教你學AutoCAD 2010
- 數控銑削(加工中心)編程與加工
- MCSA Windows Server 2016 Certification Guide:Exam 70-741
- 小型電動機實用設計手冊
- Windows游戲程序設計基礎
- CentOS 8 Essentials
- 數據掘金
- Visual FoxPro程序設計
- Silverlight 2完美征程
- 運動控制系統(第2版)