PostgreSQL的varchar长度性能影响

问题描述 投票:0回答:1

我在PostgreSQL中有一个表,它的负载很重(读取)。它实际上是一个应用程序的核心表。其中有一列是作为辨别器使用的--应用程序使用的列,它决定了代表给定行的实体(类)的类型。它必须是一个精确的varchar列。目前,我在其中存储了完整的类名,比如:: "bank_statement_transaction".

当应用程序选择所有的银行报表交易时,建立查询,如 ... WHERE Discriminator = 'bank_statement_transaction' . 这为数据、结构和代码带来了更多的可读性和清晰度。

表目前包含3M行,并且还在计算中,每月大约有10万新行。Discriminator 在一些性能调整的时候被索引了。我现在没有任何性能问题。

我正在研究一个新的功能,需要一些小的重构,是的,我有一个想法,改变全类名(bank_statement_transaction)到短的唯一代码(BST)

我复制了dbo,把全类名改成代码。在3M行的情况下,性能的提升几乎无法衡量,一样或者快1-2毫秒。

谁能分享一下VARCHAR长度对INDEX大小和性能影响的经验?在更大的数据集上?这种改变值得吗?

postgresql
1个回答
2
投票

如果你对字符串进行索引,如果字符串很长,索引会变大。扇出会变少,所以索引会变得更深。

对于搜索几行的索引扫描,这不会很明显:多读几块,在较长的字符串上运行比较,除了最简单的查询外,可能会在噪音中丢失。不过,使用较小的字符串你还是会更快。

也许最明显的效果是,更小的索引需要更少的内存来进行缓存,所以磁盘读取的次数应该会减少。

热门问题
推荐问题
最新问题