官术网_书友最值得收藏!

  • 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.

主站蜘蛛池模板: 康马县| 苏尼特右旗| 河津市| 溧水县| 西贡区| 田林县| 涞水县| 仪陇县| 鄯善县| 松原市| 绵阳市| 贵南县| 灵石县| 克东县| 上蔡县| 尖扎县| 肃宁县| 天台县| 郁南县| 奉节县| 凤翔县| 商都县| 积石山| 阿拉善左旗| 昆明市| 古蔺县| 贵溪市| 奉化市| 清苑县| 教育| 哈巴河县| 和林格尔县| 巨鹿县| 化德县| 宕昌县| 揭东县| 偏关县| 晋宁县| 芜湖县| 郎溪县| 大荔县|