【问题标题】:Many indexes Postgresql许多索引 Postgresql
【发布时间】:2012-07-28 08:45:42
【问题描述】:

我有一个包含很多搜索选项的搜索表单。我将如何索引所有这些列?创建多列索引可以吗?

导轨示例:

add_index :cars, [:brand, :fuel, :year_from, :year_to, :price_from, :price_to] and so on...

在单个索引中包含大量列是否“可以”?​​p>

P.S 我正在使用最新的 Postgresql D.S

【问题讨论】:

    标签: ruby-on-rails postgresql indexing


    【解决方案1】:

    这取决于您计划如何查询数据库表。您是否计划运行将包含子句中所有字段的查询?

    如果查询将包含子句中的所有字段,则创建多列索引是正确的方法,但如果您将在 where 子句中过滤的字段可能只是其中的一部分(例如,有时只有品牌和燃料,其他时候只有 year_from 和 year_to)以及不同的组合,您最好为每个字段创建一个索引 ...

    【讨论】:

      【解决方案2】:

      多列索引会非常大,可能太大而无法使用。 PostgreSQL 有一个很好的规划器,它可能会使用索引的前几列,然后扫描行而不是扫描索引的剩余部分。这是假设索引的前几列作为搜索条件给出的。

      注意documentation 对多列索引有这样的说法,

      应谨慎使用多列索引。在大多数情况下,一个 单个列上的索引就足够了,并且可以节省空间和时间。 超过三列的索引不太可能有帮助,除非 表格的使用非常程式化。

      并使用单列索引。

      当您对最有可能搜索的条件有了很好的了解时,您可能希望在将来尝试添加一个或两个 2 列索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-28
        • 2022-09-30
        • 1970-01-01
        • 2017-01-10
        • 2017-06-10
        • 1970-01-01
        相关资源
        最近更新 更多