数据库索引通过创建使扫描速度更快的辅助数据结构来帮助加快读取查询速度。对于许多用例来说,向一两个表添加索引基本上是理所当然的。在 Postgres 中,您可以使用命令(duh)创建索引CREATE INDEX。当您查询表时,数据库将检查索引是否存在,如果存在则使用它((顺便说一句,您可以使用 来检查EXPLAIN)。
Postgres 中最流行的索引类型(也是使用时的默认索引类型CREATE INDEX)是B 树索引 。本质上,它获取要在其上创建索引的列,对其进行排序,并存储指向已排序行的指针。通过这种方式,您可以在任何您想要的列上获得二分搜索的效率,而不仅仅是 instagram 数据 实际表排序的列(如果存在)。您可以在此处的Postgres 文档中更详细地阅读这些树的实现方式。
虽然索引很有用,但它并不全是乐趣和游戏。它们会占用空间,如果您不注意创建的数量和类型,它们可能会开始降低数据库性能。没有人比Postgres 文档本身说得更好:
“索引主要用于提高数据库性能(尽管使用不当会导致性能下降)”
在内部,当您创建索引时,Postgres 会具体化一个查找表,其中包含索引和指向索引记录的指针。这些表太多会消耗磁盘空间,使 INSERT 查询花费更长的时间,并迫使查询引擎在选择如何运行查询之前考虑更多选项。
奖励:添加一些 Postgres 扩展
Postgres 的独特之处在于对第三方扩展的本机支持。您可以使用 SQL 和 C 创建它们,它们可以小到几个语句,也可以大到整个软件库。使用公开可用/开源扩展可以像使用软件包一样为您提供帮助;当你可以使用别人的代码时,为什么还要编写自己的代码呢?以下是一些最流行的 Postgres 扩展:
时间尺度
Timescale是用于处理时间序列数据的 Postgres 扩展。简而言之,它使您的查询速度(快得多)并且非常有效地存储时间序列数据。您可以在此处找到安装说明,或者如果您实际上使用时间序列数据运行您的业务,则可以考虑云托管的 Timescale 选项(尽管您可能已经意识到这一点)。
向较大的表添加索引(计划)
-
- Posts: 598
- Joined: Sat Dec 21, 2024 3:27 am