Postgresql——其他都一样,查询(小)整数或浮点值的速度比查询(小的)字符串值的速度快



我将用表示字符串或整数值的类别来追溯/事后标记100000条记录。还有更多的事情要做。本栏标记的类别反映了不同类别类型的标量连续体,本质上从"松散"到"紧密"。不过,我正在考虑使用字符串值,而不是整数,以防有一天我回到它时不知道什么是什么意思。

这就是使用字符串的原因,可读性。

但我将非常依赖这些列,根据这个标准选择大量记录。

显然,无论是什么,我都会在上面加一个索引,但有了索引,我不确定查询整数比使用字符串快多少。我注意到了使用布尔值的快速性,可以合理地假设小整数的查询速度比基于此的字符串更快。

我已经考虑了一段时间了,所以我想提出一个问题。感谢

如果它真的是一个表示"looser"one_answers"stripper"之间某个有序级别的字符串,请考虑使用枚举:

http://www.postgresql.org/docs/current/static/datatype-enum.html

这样,你会两全其美。

不过,有一点需要注意:理想情况下,确保提前确定所有可能的值。更改枚举当然是可能的,但这样做会在内部(在32位浮点字段上)添加额外的查找和排序步骤,当其数字表示形式(其oid是32位整数)的顺序不再匹配其最终顺序时。(性能差异很小,但如果您的数据增长到数十亿行,请记住这一点。而且:它只适用于更改现有枚举的顺序。)

关于问题的第二部分,在我几年前进行的公认有限的测试中,对小整数(16位)进行排序比普通整数(32位)慢一点。我想这是因为它们无论如何都是作为32位整数操作的。排序或查询整数(如枚举)比排序任意字符串更快。呃,如果你不需要在这条路上添加任意值的灵活性,就使用枚举:它们会给你每个世界最好的结果。

最新更新