【问题标题】:Search performance by column value in PostgreSQLPostgreSQL 中按列值的搜索性能
【发布时间】:2018-09-29 22:33:57
【问题描述】:

我有一张大约有 4000 行的表格。该表有一个名为“类型”的列。 查询

SELECT DISTINCT type FROM table

显示 14 行。

在最近的将来,该表将增长到大约 1000 万行,我不知道不同的“类型”值是保留 14 还是增加。

如果我创建另一个名为“types”的表并在我的主表中创建“type_id”列而不是字符串“type”,这是否有意义?在这种情况下,每次遇到新值时,我都必须在类型表中插入新行。

或者只是为我的类型列添加一个哈希索引然后搜索就足够了

SELECT * FROM table WHERE table.type IN('value1', 'value2', 'value3')

?

【问题讨论】:

  • 一般来说,规范化你的表格(例如将类型列移动到自己的表格中)是一件好事。不是为了性能,而是为了方便。

标签: sql postgresql


【解决方案1】:

我投票给一张新桌子。这将确保您有一个明确的类型列表。您可以添加其他信息,例如:

  • 代码
  • 姓名
  • 说明
  • 创建日期
  • 创建者

此外,这将使任何查询都更快地获取类型列表(例如对于应用程序)。它还将确保类型是一致的。如果它们是字符串,则这一点尤其重要——可能拼写错误、有隐藏字符或只是增加。

【讨论】:

    猜你喜欢
    • 2014-01-05
    • 2021-09-27
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-19
    • 2011-10-17
    相关资源
    最近更新 更多