使用按字典顺序排列的字符串作为主键时的性能影响

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

在 PostgreSQL(或通常在任何众所周知的 DBMS 中)使用字符串主键时,性能会受到多大影响? 字符串的前半部分按字典顺序排序(如字符串日期),另一部分则随机排序,例如:

20231201_A32vhfe

更多信息:

  • 仅使用相等
    =
    条件(不使用
    LIKE
    进行范围搜索)
  • 读取比插入更频繁
  • 密钥长度为15-30(非恒定长度)
  • 表将有约 10M 条记录

优化目标是读,写并不重要,因为很少见。

谢谢!

PS:作为附加问题(但不是强制性的),如果出现以下情况,会对写入性能产生什么影响:

  • 插入将带有在字符串的第一部分使用当前时间的键 - 因此插入通常按日期排序,但不在特定日期范围内排序
  • 删除与插入一样频繁,但删除是从任意位置进行的
database postgresql database-indexes
1个回答
0
投票

它会比整数慢一点,但我怀疑你会注意到其中的差异。如果您想要确定性,请运行基准测试。

您绝对应该使用

COLLATE "C"
定义列,这样您就不会因为自然语言排序规则而产生任何开销。

© www.soinside.com 2019 - 2024. All rights reserved.