许多索引Postgresql



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

Rails示例:

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

在一个索引中包含大量列是否"可以"?

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

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

在查询将包含子句中的所有字段的情况下,创建多列索引是正确的方法,但如果您将在where子句中筛选的字段可能只是其中的一部分(例如,有时只有brand和fuels,其他时候只有year_from和year_to),并且是不同的组合,则您最好为每个字段创建一个索引。。。

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

请注意,文档中有关于多列索引的内容,

应谨慎使用多列索引。在大多数情况下对单个列进行索引就足够了,可以节省空间和时间。除非这个表格的使用非常程式化。

并使用单列索引。

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

最新更新